【发布时间】:2016-11-25 05:09:52
【问题描述】:
我正在使用 Nunit 和 Autofac 的 Moq 来设置测试
[TestFixture]
public class SomeTests
{
[OneTimeSetUp]
public void Initialize()
{
}
[Test]
public void SalaryCheck()
{
using (var mock = AutoMock.GetLoose())
{
// Arrange
mock.Mock<ICommonServices>().Setup(x => x.AddTwoNumbers(1,2)).Returns(5);
var sut = mock.Create<SomeManager>();
// Act
int actul = sut.CalculateSalary(1);
var expected = 5;
// Assert
Assert.AreEqual(expected, actul);
}
}
}
CalculateSalary 函数如下所示
public int CalculateSalary(int hours)
{
var addres = _commonService.AddTwoNumbers(5,3);
if (addres == 5)
{
return addres * hours;
}
else
{
return 100;
}
}
我希望作为外部依赖项的 AddTwoNumbers 函数无论如何都返回 5。这就是为什么我在嘲笑它之后设置它。但是当我调试这个测试时,它看起来像是在计算薪水函数内部,但为 AddTwoNumbers 函数返回一个“0”。这是一种默认值或空值。
它不会返回 5,即我设置它返回的值。
【问题讨论】:
标签: c# unit-testing mocking nunit