단위 테스트를위한 조롱 프레임 워크로 Rhino Mock을 사용하고 있습니다.Rhino 모의를 사용하여 내부 유형에 대한 모의 수업을 만들 수 없습니다.
나는 테스트하고 싶은 클래스 인 Subject라는 클래스를 가지고 있습니다. 그것은 IStore에 의존합니다.
//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
}
에서 내 설정, 인터페이스가 내부로 정의되어 있고 InternalsVisible이 Subject 클래스와 Sto 모두에 대해 설정되어 있습니다. reTests 클래스. 그러나 테스트 케이스가 실행될 때, var에 예외를 던진다. mockStore = MockRepository.GenerateMock(); IStore가 public이 아니므로 Mock을 생성 할 수 없다고 말합니다.
IStore가 공개되지 않았기 때문에 이것이라고 생각합니다. 그러나 IStore dll에 InternalsVisibleTo를 설정 했으므로 StoreTests가 해당 클래스의 모의 객체를 만들지는 충분하지 않습니까?
이제이 문제는 IStore 인터페이스를 공용으로 만들어 해결할 수 있다고 생각합니다. 그러나 이것이 나를위한 선택 사항이 아니라면 IStore를위한 모의를 만들 수있는 다른 방법이 있습니까? 는 테스트중인 의 AssemblyInfo.cs에 다음과 같은 어셈블리의 파일을 추가하기에 충분해야한다 네
링크 주셔서 감사합니다! 이제 작동합니다. – Santhosh