dat*_*r02 6 c# nunit unit-testing moq
我正在尝试编写单元测试并遇到错误,
Parent 没有默认构造函数。必须显式定义默认构造函数。
我查看了这意味着什么,我看到它提到没有公共构造函数。唯一的问题是,我的代码确实有这个,所以我很困惑为什么会出现这个错误。
这是单元测试..
public void CalculateVat_ReturnsCorrectAmount()
{
// Arrange
const decimal expectedResult = 2;
_mockSingleValueParameter = new Mock<ISingleValueParameterService>();
_mockItemCache = new Mock<ItemCache>();
_mockReferenceDataService = new Mock<ReferenceDataService>();
_Calculator = new CostCalculator(_mockSingleValueParameter.Object, _mockItemCache.Object,
_mockReferenceDataService.Object);
// end
//.....
}
Run Code Online (Sandbox Code Playgroud)
线路
_calculator = new CostCalculator(_mockSingleValueParameter.Object, _mockItemCache.Object,
_mockReferenceDataService.Object)
Run Code Online (Sandbox Code Playgroud)
是抛出错误的那个。
CostCalculator这是..的构造函数
public CostCalculator(
ISingleValueParameterService singleValueParameterService, ItemCache cache, ReferenceDataService referenceDataService);
{
_itemCache = cache;
_singleValueParamService = singleValueParameterService;
_refDataService = referenceDataService;
}
Run Code Online (Sandbox Code Playgroud)
项目中还有其他代码看起来也像这样但可以工作..我无法理解它们之间有什么区别。
蒂亚!
如果你想模拟一个具体的类而不是一个接口,它必须有一个默认的构造函数(即没有参数),并且你想要执行设置的任何方法都必须是虚拟的。
在您的情况下,看起来其中一个ItemCache或ReferenceDataService(或两者)都缺少默认构造函数。
| 归档时间: |
|
| 查看次数: |
7836 次 |
| 最近记录: |