와 구체적인 클래스를 조롱 할 때 인터페이스 인수 생성자를 호출하기 위해 어떻게해야 생성자 주입 사용하는 다음 클래스 : 나는 단순히 MOQ를 만들이 클래스의 대부분의 메소드에 대한MOQ
public class Service : IService
{
public Service(IRepository repository, IProvider provider) { ... }
}
이 IRepository
에 대한 조롱과 IProvider
및 Service
을 구성하십시오. 그러나 같은 클래스에서 다른 여러 메서드를 호출하는 클래스의 메서드가 하나 있습니다. 이 메서드를 테스트하기 위해 모든 메서드를 함께 테스트하는 대신 메서드가 해당 메서드를 올바르게 호출하고 반환 값을 올바르게 처리하는지 테스트하려고합니다.
가장 좋은 방법은 모의 Service
입니다. 나는 전에 Moq과 구체적인 수업을 조롱했다. Moq와 함께 생성자 인수가 필요한 구체적인 클래스를 조롱했습니다. 그러나, 조롱 된 인수를 조롱 된 객체의 생성자에 전달해야 할 필요가있는 것은 이번이 처음입니다. 당연히이 방법으로 시도했습니다.
var repository = new Mock<IRepository>();
var provider = new Mock<IProvider>();
var service = new Mock<Service>(repository.Object, provider.Object);
그러나 작동하지 않습니다. 대신에, 나는 다음과 같은 오류가 발생합니다 : Service
의 생성자 int
들과 string
들처럼 간단한 인수를하는 경우,하지만 내가 조롱하고있어 인터페이스를 필요하지 않으면이 잘 작동
Castle.DynamicProxy.InvalidProxyConstructorArgumentsException : Can not instantiate proxy of class: My.Namespace.Service.
Could not find a constructor that would match given arguments:
Castle.Proxies.IRepository
Castle.Proxies.IProvider
. 어떻게 할 수 있니?
어떤 Moq 및 Castle 버전을 사용하고 있습니까? 샘플 코드가 Moq 4.2.1312.1622 및 Castle.Core 3.2.2를 사용하여 잘 작동하기 때문에 ... – nemesv