【发布时间】:2016-03-07 18:25:08
【问题描述】:
我有以下类结构:
public class MyObj
{
public int Number;
}
public interface IService
{
int ProcessInt(MyObj obj);
}
public class Service : IService
{
public int ProcessInt(MyObj myObj)
{
return myObj.Number;
}
}
然后是消费者类
public class Class1
{
public void Run(IService s)
{
var obj = new MyObj {Number = 1};
Console.WriteLine(s.ProcessInt(obj));
}
}
然后是单元测试
[TestFixture]
public class MyTest
{
private readonly Mock<IService> _service = new Mock<IService>(MockBehavior.Strict);
private readonly Class1 _sut = new Class1();
[SetUp]
public void SetUp()
{
var obj = new MyObj {Number = 1};
_service.Setup(x => x.ProcessInt(obj)).Returns(1);
}
[Test]
public void TestClass1()
{
_sut.Run(_service.Object);
}
}
我遇到的问题是,当我运行单元测试时,我得到“Moq.MockException : IService.ProcessInt(MoqStuff.MyObj) 调用失败,模拟行为严格。模拟上的所有调用都必须有相应的设置。“这很奇怪,因为我有那个输入的设置。
这是 Moq 框架的预期行为吗?有什么办法可以解决吗?
谢谢
【问题讨论】:
标签: c# unit-testing nunit moq