【发布时间】:2016-04-21 14:57:58
【问题描述】:
我收到一个错误
在 mock 上调用一次,但为 0 次
下面是我的代码结构
public class GenerateAddress : IGenerateAddress
{
public GenerateAddress(IAddress createAdd, IValidate validate) {
//constructor
}
public Address GetAddressFromA(string name){..}
}
public class SaveAddress : ISaveAddress
{
public SaveAddress(IGenerateAddress generateaddress) {
//constructor
}
public bool Save(string name)
{
var address = generateaddress.GetAddressFromA(name);
......
//Rest of the code to save
}
}
测试类保存地址的测试方法
public void TestVerifyGetAddressIsCalled()
{
var mockIAddress = new Mock<IAddress>();
var mockValidate = new Mock<IValidate>();
var genAddress = new Mock<IGenerateAddress>();
var objGenAdress = new GenerateAddress(mockIAddress.Object, mockValidate.Object) //
var objSaveAddress = new SaveAddress(objGenAdress);
objSaveAddress.Save("dddd");
//Verify if IGenerateAddress 'GenerateAddress' is called
genAddress.Verify(a=>a.GenerateAddress("ddddd"),Times.Once); // Throws Excepted Invocation
}
我需要验证是否调用了GenerateAddress。我也做了Setup 并将值分配给 Address 对象但即使这些值也没有设置..不知道出了什么问题。
【问题讨论】:
-
您永远不会将
genAddress间接传递给SaveAddress。
标签: c# unit-testing moq