我在类的实例上有一个属性,它基本上对该类的其他属性求和。我如何模拟“已知”属性但仍然在实例上调用该方法?这显然不起作用,但希望能够解决我的问题:
public void TestSum()
{
// Arrange
var classToTestInstance = new ClassToTest();
classToTestInstance.MyProp1 = new Mock().Returns(5); // MyProp1 is private set;
classToTestInstance.MyProp2 = new Mock().Returns(3); // Same
// There's not really an Act here...
// Assert; Total is the actual property I want to test
classToTestInstance.Total.Should().Be(8);
}
我可以实例化一个实际的ClassToTest,并为我的Total测试执行使其处于正确状态的函数,但之后我不只是测试Total功能。
答案 0 :(得分:3)
我可以实例化一个实际的ClassToTest,并为我的Total测试执行使其处于正确状态的函数,但之后我不只是测试Total函数。
不,但如果您认为需要分别测试该功能,那么它可能不应该是同一个对象的一部分。
就我个人而言,我会这样做:让对象进入正确的状态,然后测试Total
。不要忘记,您可以对功能进行大量专用的单元测试,以便将对象置于正确的状态。
虽然肯定有一些模拟框架允许你在测试原始Total
行为的同时模仿这种行为,但我个人避免嘲笑你试图测试的同一个类 - 事实上我d避免过度使用模拟。它在正确的位置很好,但在真实的东西(以及单独测试的“真实的东西”)中,我会这样做。