【发布时间】:2017-04-23 23:56:01
【问题描述】:
我有一个简单的方法,比如:
public class MyService : IMyService
{
public int Add(int x, int y)
{
return x + y;
}
}
public interface IMyService
{
int Add(int x, int y);
}
我为该方法编写了一个单元测试:
public void PassingTest()
{
var mock = new Mock<IMyService>();
mock.Setup(x => x.Add(It.IsAny<int>(), It.IsAny<int>())).Returns<int, int>((x, y) => { return x + y; });
var svc = mock.Object;
var result = svc.Add(3, 3);
var result2 = svc.Add(2, 5);
result.Should().Be(6);
result2.Should().Be(7);
}
这段代码可以吗?为什么一定要写Returns和整个方法几乎一样的语句?
【问题讨论】:
-
只有在
IMyService被用作您想要测试的另一个类的依赖项时,您才会这样做。如果IMyService是正在测试的系统,那么您不会模拟您正在尝试测试的系统。您使用目标类的实际实例
标签: c# .net unit-testing moq xunit