【发布时间】:2016-05-30 07:25:11
【问题描述】:
请看我下面的代码,验证总是失败。有人可以帮忙吗?
public class ViewModel
{
private IMyDataService dataService = null;
public ViewModel(IMyDataService dataService)
{
this.dataService = dataService;
}
public Dictionary<string, string> filters {get; set;}
public void ProcessFilters()
{
dataService.ProcessFilters(filters);
}
}
[TestMethod]
public void ProcessFilters_Test()
{
var mockService = new Mock<IMyDataService>();
ViewModel vm = new ViewModel(mockService.Object);
Dictionary<string,string> filters = null;
vm.ProcessFilters(filters);
mockService.Verify(x=>x.ProcessFilters(filters), Times.Once);
}
【问题讨论】:
-
您的
filters-variable 始终为空,我认为这是问题所在 -
我只测试 dataService.ProcessFilters 方法是否执行。我不在乎过滤器的价值。
-
如果没有这个方法的代码,我们只能猜测哪里出了问题。你的代码会抛出异常吗?还是断言语句只是失败了?
-
不,代码执行成功。只是验证测试方法说:预期在模拟上调用一次,但为 0 次:x=>x.ProcessFilters(filters)
-
您尝试调试您的测试吗?那么应该很容易发现问题。
标签: c# unit-testing moq