测试模拟对象构造函数

问题描述:

我想测试一个对象“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#是静态类型的,因此除非为所有必需的参数提供值,否则代码将不会编译。

+0

的问题是,由于对象需要一个int,我无法用一个空从而测试错误时抛出创建它,因为有一个编译时错误? – hoakey 2011-01-08 13:18:06

​​