我正在使用VS Unit和Moq进行单元测试,我无法找出放置模拟设置的正确位置。
目前我正在设置这样的模拟:
[TestMethod]
public void SomeTestMethod()
{
// Arrange: ...
mockRepository.Setup(repo => repo.SomeRepoMethod()).Returns(someMockData);
// Act: ...
// Assert: ...
}
我发现每个测试方法中的模拟方法使我的代码更少DRY,因为我必须复制粘贴到需要模拟实现SomeRepoMethod
的任何测试方法。
这是常态,还是应该将我的设置移到像ClassInitialize
这样的公共场所?
答案 0 :(得分:6)
我的经验法则是,如果在课堂上的每个测试中都使用了模拟,那么我将在ClassInitialize
中进行设置。如果只有一些人使用它,那么我将在类中创建一个非测试方法,然后从任何需要模拟对象的测试中调用它。
答案 1 :(得分:0)
模拟是我们为创建环境来测试特定场景所做的事情。例如,如果您有一个弹出窗口,可以从用户那里获得输入。如果你需要编写单元测试来测试这样的屏幕,在这种情况下,如果你模拟这样的Pop我们在每个测试测试方法将变得重复。在这种情况下,在 ClassInitialize 中创建一次将有所帮助。