저는 Moq을 사용하고 있습니다. 개인적인 방법을 테스트해야합니다.Moq을 사용한 개인 메서드 테스트가 작동하지 않습니다.
나는이 어셈블리가 :
[TestFixture]
public class CustomerTestFixture
{
var customerMock=new Mock<ICustomer>()
customerMock.Protected().Setup<bool>("CanTestPrivateMethod").Returns(true);
etc...
}
CustomerBusiness.dll이있다
공용 인터페이스 ICustomer { 무효 주문 (:
CustomerTest.dll
CustomerBusiness.dll
을 다음과 같이 그래서 CustomerTest DLL은 클래스가); }
public class Customer:ICustomer
{
public void Buy()
{
etc...
}
protected virtual bool CanTestPrivateMethod()
{
return true;
}
}
가 나는도 있지만 차이 [assembly: InternalsVisibleTo("CustomerTest.CustomerTestFixture")
을 추가 한
System.ArgumentException : Member ICustomer.CannotTestMethod does not exist.
at Moq.Protected.ProtectedMock`1.ThrowIfMemberMissing(String memberName, MethodInfo method, PropertyInfo property)
at Moq.Protected.ProtectedMock`1.Setup(String methodOrPropertyName, Object[] args)
다음과 같은 오류를 얻을!
무엇이 잘못 되었나요? 나는 나의 인터페이스가 그런 방법이 아니라는 것을 안다. 그것은 나의 방법이 사적이어야한다는 점이다. 예를 들고 도울 수 있습니까?
은 내가 어셈블리 정보에 InternalVisibleTo 속성 또는 내가 그것을 삭제할 수 필요 감사 – user9969
은 또한 당신이 고마워요, devnet247 @ – user9969
로 단계 수? InternalsVisibleTo' 물건을 조롱하는 능력에 영향을 미치지 않습니다 '제거 테스트의 다른 측면에서는 중요 할 수 있습니다. 그것을 제거하면 컴파일 타임에 뛰어 내리지 않는 효과가 없어야합니다. –