我正在使用Rhino Mocks作为单元测试的嘲讽框架。无法使用Rhino Mocks创建内部类型的模拟类
我有一个名为Subject的类,它是我想测试的类。它依赖于IStore。
IStore定义如下:
//internal interface : has InternalsVisible to both "Subject"
//and "StoreTests" class namespaces
internal interface IStore {
void Store(string name);
//other methods
}
和主题类被定义为如下:
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
}
在我的设置,界面被定义为内部,并且它具有为Subject类和Sto设置的InternalsVisible重新测试课程。但是,当测试用例执行时,它会在var mockStore = MockRepository.GenerateMock();时引发异常。 表示IStore不公开,因此无法生成模拟。
我认为这是因为IStore不公开。但是,由于我已经在IStore dll上设置了InternalsVisibleTo,它会不足以让StoreTests为该类创建一个模拟?
现在我认为这个问题可以通过公开IStore接口来解决。但是鉴于这不是我的选择,有没有其他方法可以为IStore创建模拟?
感谢您的链接!它现在有效。 – Santhosh