gpt4 book ai didi

c# - 使用 Mock 进行单元测试。父级没有默认构造函数

转载 作者:行者123 更新时间:2023-12-04 15:57:40 25 4
gpt4 key购买 nike

我正在尝试编写单元测试并遇到错误,

Parent does not have a default constructor. The default constructor must be explicitly defined.



我看了一下这意味着什么,我看到它提到没有公共(public)构造函数。唯一的问题是,我的代码确实有这个,所以我很困惑为什么会出现这个错误。

这是单元测试..
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

//.....
}

线
_calculator = new CostCalculator(_mockSingleValueParameter.Object, _mockItemCache.Object,
_mockReferenceDataService.Object)

是引发错误的那个。

这是 CostCalculator的构造函数..
public CostCalculator(
ISingleValueParameterService singleValueParameterService, ItemCache cache, ReferenceDataService referenceDataService);
{
_itemCache = cache;
_singleValueParamService = singleValueParameterService;
_refDataService = referenceDataService;
}

项目中还有其他代码看起来也像这样,但有效..我不明白它们之间有什么区别。

蒂亚!

最佳答案

如果你想模拟一个具体的类而不是一个接口(interface),它必须有一个默认的构造函数(即没有参数),并且你想在其上执行设置的任何方法都必须是虚拟的。

在您的情况下,它看起来像 ItemCacheReferenceDataService (或两者)都缺少默认构造函数。

关于c# - 使用 Mock 进行单元测试。父级没有默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51247458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com