测试Mocked对象构造函数

时间:2011-01-08 13:08:01

标签: c# .net unit-testing mocking moq

我正在尝试测试一个在初始化时采用int的对象“SqlGymSessionRepository”。如果没有提供参数,我希望它抛出错误。我无法弄清楚这应该如何运作。我有这样的事情:

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Throw_Exception_If_Not_Session_Id()
{
    var mockRepos = new Mock<SqlGymSessionRepository>();
}

我不确定应该在哪里测试构造函数?

3 个答案:

答案 0 :(得分:4)

您不想模拟您正在测试的类(实现)。您想要在类上模拟依赖项。如果你正在测试SqlGymSessionRepository,那么你不想模拟它,你想要它的实现。模拟适用于SqlGymSessionRepository所依赖的任何其他类,然后您将为其提供测试。

直接调用构造函数。

答案 1 :(得分:1)

如果要测试构造函数,请将其命名为:

new SqlGymSessionRepository(null);

根据评论

更新

你说它需要一个可以为空的int。然后编译器将确保始终使用null或整数值调用它。如果null是无效的初始化有效,则您的代码应抛出异常,您可以对其进行测试。您不需要测试在没有参数的情况下调用该方法。 C#是静态类型的,因此除非为所有必需参数提供值,否则代码将无法编译。

答案 2 :(得分:0)

new SqlGymSessionRepository(null);