【发布时间】:2020-07-07 13:40:22
【问题描述】:
我有以下课程:
public ExtractUkFileFunction (UkExtractFileHandler fileHandler)
{
_fileHandler = fileHandler;
}
和
public class UkExtractFileHandler : ExtractFileHandler<UkExtractFileHandler.FileMapper>
{
public UkExtractFileHandler(ILoggerFactory loggerFactory, IRecordParser recordParser, IUnzipper unzipper, IFileStore fileStore, ILocationService locationService)
: base(recordParser, unzipper, fileStore, locationService)
{
Logger = loggerFactory.Create<ExtractFileHandler>();
}
作为我的单元测试的起点,我只想构建这个类/检查它是否可以构建。我尝试了以下方法:
[Test]
public void Construct_ExtractUkFileFunction_ExpectSuccess()
{
var mockLoggerFactory = new Mock<ILoggerFactory>();
var mockRecordParser = new Mock<IRecordParser>();
var mockUnzipper = new Mock<IUnzipper>();
var mockFileStore = new Mock<IFileStore>();
var mockLocationService = new Mock<ILocationService>();
var mockFileHandler = new Mock<ExtractFileHandler>
(mockLoggerFactory.Object, mockRecordParser.Object, mockUnzipper.Object, mockFileStore.Object, mockLocationService.Object);
var extractUkFileFunction = new ExtractUkFileFunction(mockFileHandler.Object);
Assert.IsNotNull(extractUkFileFunction );
}
但是我收到错误:
Can not instantiate proxy of class: Core.Handlers.UkExtractFileHandler.
Could not find a constructor that would match given arguments:
Castle.Proxies.ILoggerFactoryProxy
Castle.Proxies.IRecordParserProxy
Castle.Proxies.IUnzipperProxy
Castle.Proxies.IFileStoreProxy
Castle.Proxies.ILocationServiceProxy
我在 C# 单元测试或最小起订量方面没有很多经验,所以任何建议都将不胜感激。谢谢!
【问题讨论】:
-
我认为问题是由您使用的起订量版本和测试的目标框架引起的。您使用的是 .net 还是 .net 核心?
-
你有
UkExtractFileHandler,但模拟ExtractFileHandler。ExtractFileHandler长什么样子? -
抱歉@PavelAnikhouski 打错了
标签: c# unit-testing moq