我是TDD的新人,我还有很多问题,其中一个问题是如何测试void方法!
我有一个通过参考传递的params,我不知道如何测试:(这只是一个测试,而不是我真正的方法)
public void ReplaceCenter(ref string cod, ref string name)
{
User user = userDAO.GetSomething();
if (user.Cod != null)
{
cod = user.Cod;
}
if (user.Name != null)
{
name = user.Name;
}
}
有些人可以帮忙吗?谢谢!
答案 0 :(得分:5)
假设userDAO
被注入为依赖项并且可以被模拟,我会进行以下测试:
GetSomething()
userDAO
cod
==在User.Cod中传递给我们
用于创建模拟userDAO
name
==传递给User.Cod
我们曾经创建过模拟的userDAO
我同意避免使用ref参数,我建议按@Tim Cools的其他答案中的建议进行重构
答案 1 :(得分:3)
you should try to avoid ref and out parameters.使用包含两个属性的对象。这将使您的设计更清洁,您的工作更清洁......
编辑:如果你真的想要moq out参数使用你可以找到一个例子here
答案 2 :(得分:1)
在调用方法后,只需测试参数中的值,模拟userDAO来控制它返回的内容(null,cod,name)
答案 3 :(得分:0)
void方法意味着会产生某种副作用。我通常建议尽可能避免使用它们,但是当你需要测试时,一般的经验法则是:
实际上,这些断言也应该用于非空方法,或许更多是为了防止意外的副作用,而不是测试预期的副作用。 (IMO,如果可能的话,函数应该没有副作用。)