在我的应用程序中,Bill控制器类是这样的。在这里
Logger
参数引用自
Serilog.Core;
using Microsoft.Extensions.Configuration;
using Serilog.Core;
using System;
using System.Threading.Tasks;
namespace core.admin.biller.Controllers {
[ApiController]
[Produces("application/json")]
public class BillController: Controller {
readonly IBillRepository BillRepository;
APILog APILog;
public BillController(IBillRepository _BillRepository, Logger logger, IConfiguration configuration) {
BillRepository = _BillRepository;
APILog = new(logger, configuration);
}
}
}
我给上面的类写了一些单元测试,内容是这样的。
public class BillUnitTest
{
public Mock<IBillRepository> mock = new();
public Mock<IConfiguration> mockConfig = new();
public Mock<Logger> mockLog = new();
[Fact]
public void GetBill_NullObjectPassed_ReturnsBadRequestResult()
{
//Arrange
BillController BillController = new(mock.Object,mockLog.Object,mockConfig.Object);
RetriveSavedBillerReqModel req = null;
// Act
var result = BillController.GetSavedBillers(req);
// Assert
Assert.IsType<BadRequestObjectResult>(result);
}
}
现在我在这里得到以下错误。
错误消息:
系统NotSupportedException:要模拟的类型(Logger)必须是接口、委托或非密封的非静态类。
堆栈跟踪:
Moq。警卫C:\projects\moq4\src\Moq\Guard.cs:line 120中的IsMockable(类型类型)
如何解决此错误?