如何模拟/伪造在另一个函数中调用的函数的结果?通常 Test2 是一个我不喜欢获取真实数据的 DataAccess 方法。
我喜欢我的单元测试测试的是业务逻辑。
这就是我现在所拥有的,但它根本不起作用。 Sum 始终被断言为 5!
public int Test1()
{
var value = this.Test2(); //Unittest should substitute with 5
var businesslogic = value + 10; //The business logic
return businesslogic;
}
public int Test2()
{
return 10; //I try to mock this value away in the test. Don´t go here!
}
然后我有一个单元测试,我想在我的“业务逻辑”上运行。
[TestMethod()]
public void TestToTest()
{
//Arrange
var instance = A.Fake<IClassWithMethods>();
//Make calling Test2 return 5 and not 10.
A.CallTo(() => instance.Test2()).Returns(5);
//Call the method
var sum = instance.Test1();
//Assert if the business logic in the method works.
Assert.AreEqual(15, sum);
}
据我所知你不能这样做。
Your instance
不是真实类的实例,只是其接口的模型,因此调用instance.Test1()
不会调用您上面描述的代码。但是您可以进行单元测试Test2
方法自有。
但是,您可以做的是进行 2 个单元测试。
在第一个测试中(测试方法Test2
),您可以使用必要的依赖项实例化您的类(或者如果不存在具有某些值/参数的依赖项)。
然后使用相同的输入参数进行第二次测试,并进行测试Test()
方法。
模型仅用于必须在接口上进行模型化的依赖项(已实例化)outside您测试的班级)。即如果你有ClassA
and ClassB
and ClassA
依赖于取决于IClassB
界面。然后你可以模拟B来测试A。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)