का उपयोग कर आंतरिक प्रकार के लिए एक मॉक क्लास नहीं बना सकता है, मैं इकाई परीक्षण के लिए एक मॉकिंग फ्रेमवर्क के रूप में राइनो मोक्स का उपयोग कर रहा हूं।राइनो मोक्स
मेरे पास विषय कहा जाता है जिसे कक्षा मैं परीक्षण करना चाहता हूं। यह इस्तौर पर निर्भरता है।
//internal interface : has InternalsVisible to both "Subject"
//and "StoreTests" class namespaces
internal interface IStore {
void Store(string name);
//other methods
}
और विषय वर्ग इस प्रकार परिभाषित किया गया है:
iStore इस प्रकार परिभाषित किया गया है
class Subject : IStore {
private IStore internalStore;
//constructor injection
void Subject(IStore store) {
internalStore = store;
}
void Store(string name) {
internalStore.Store(name);
}
//other methods
}
मेरा परीक्षण वर्ग RhinoMocks का उपयोग कर इस प्रकार है:
//test class
class StoreTests {
Subject subject = new Subject();
[Test]
public StoreTest() {
//Arrange
var mockStore = MockRepository.GenerateMock<IStore>();
string testName = "test";
mockStore.Expect(x => x.Store(testName)).Returns(null);
//Act
subject.Store(testName);
//Assert
mockStore.VerifyAllExpectations();
}
//other test methods
}
में मेरा सेटअप, इंटरफ़ेस को आंतरिक के रूप में परिभाषित किया गया है और इसमें विषय वर्ग और स्टो दोनों के लिए आंतरिक दृश्य सेट है कक्षा में retests। हालांकि, जब परीक्षण केस निष्पादित होता है, तो यह var mockStore = MockRepository.GenerateMock() पर अपवाद फेंकता है; कह रहा है कि इस्तौर सार्वजनिक नहीं है और इसलिए यह एक नकली उत्पन्न नहीं कर सका।
मुझे लगता है कि ऐसा इसलिए है क्योंकि आईएसटीओआर सार्वजनिक नहीं है। हालांकि, चूंकि मैंने आईएसटीओआर डीएल पर आंतरिक दृश्यों को सेट किया है, तो क्या स्टोरस्टेस्ट के लिए उस वर्ग के लिए नकली बनाने के लिए पर्याप्त नहीं होगा?
अब मुझे लगता है कि इस समस्या को आईएसटीओआर इंटरफ़ेस सार्वजनिक बनाकर हल किया जा सकता है। हालांकि यह देखते हुए कि यह मेरे लिए कोई विकल्प नहीं है, क्या कोई अन्य तरीका है कि मैं इस्तोर के लिए नकली बना सकता हूं?
लिंक के लिए धन्यवाद! यह अब काम करता है। – Santhosh