Stu*_*rla 4 c# unit-testing fakeiteasy
如何模拟/伪造另一个函数中调用的函数的结果?通常 Test2 将是一种我不喜欢获取真实数据的 DataAccess 方法。我喜欢我的单元测试测试的是业务逻辑。
这就是我现在所拥有的,但它根本不起作用。总和始终断言为 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!
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个单元测试,我想在我的“业务逻辑”上运行。
[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);
}
Run Code Online (Sandbox Code Playgroud)
据我所知,你不能这样做。
您instance不是真实类的实例,只是它接口上的一个模型,因此调用instance.Test1()不会调用您上面描述的代码。但是,您可以Test2自行使用UnitTest方法。
但是,您可以做的是,进行 2 个单元测试。
在第一个测试(测试方法Test2)中,您使用必要的依赖项(或者如果没有具有某些值/参数的依赖项)实例化您的类。
然后使用相同的输入参数和测试Test()方法进行第二次测试。
Mockups 仅用于依赖项,您必须在接口上进行模拟(在您测试的类之外实例化)。也就是说,如果你有ClassA和ClassB并ClassA取决于IClassB接口。然后你可以模拟B来测试A。
| 归档时间: |
|
| 查看次数: |
6350 次 |
| 最近记录: |