测试模拟对象构造函数
问题描述:
我想测试一个对象“SqlGymSessionRepository”,它在初始化时需要一个int。如果没有提供参数,我希望它引发错误。我无法弄清楚这应该如何工作。我有这样的事情:测试模拟对象构造函数
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Throw_Exception_If_Not_Session_Id()
{
var mockRepos = new Mock<SqlGymSessionRepository>();
}
我不确定构造函数应该在哪里测试?
答
你不想嘲笑你正在测试的类(实现)。你想模拟一个类的依赖关系。如果你正在测试SqlGymSessionRepository
,那么你不想嘲笑它,你想要它的实现。这个嘲讽适用于任何其他类别,其中SqlGymSessionRepository
取决于你,然后你会提供给你的测试。
直接调用构造函数。
答
如果你要测试的构造函数,调用它:
更新%的评论:
就表示它需要一个可空INT。然后,编译器将确保它将始终使用null
或整数值进行调用。如果null
是一个无效的初始化有效的,你的代码应该抛出一个异常,你可以测试它。您不需要测试该方法在没有参数的情况下被调用。 C#是静态类型的,因此除非为所有必需的参数提供值,否则代码将不会编译。
答
的问题是,由于对象需要一个int,我无法用一个空从而测试错误时抛出创建它,因为有一个编译时错误? – hoakey 2011-01-08 13:18:06