【发布时间】:2012-05-16 02:26:35
【问题描述】:
我正在尝试学习如何使用 Moq 使用 C# 进行单元测试。我设置了一个简单的类,BasicMath,它有一个函数int Multiply(int a, int b),主体只返回a * b。我有另一个名为 AdvancedMath 的类,它有一个函数'int Square(int a)',主体调用 Multiply(a,a) 并返回结果。
我正在尝试为 AdvancedMath.Square 编写一个简单的测试,它将断言使用正确的值调用 BasicMath.Multiply。我知道你不能用普通的公共功能做到这一点,所以我把这些功能设为虚拟,但我仍然遇到麻烦。有人可以向我解释这是如何完成的吗?除了默认的空构造函数之外,这两个类都没有任何构造函数。
这是我的尝试:
class test_Advanced_Functions
{
[Test]
public void test_SquareFunction_Should_return_correct_result()
{
// Arrange
Mock<BasicFunctions> mock = new Mock<BasicFunctions>();
AdvancedFunctions af = new AdvancedFunctions();
// Act
int result = af.Square(5);
//Assert
mock.Verify(d => d.Multiply(5, 5), Times.Exactly(1));
}
【问题讨论】:
-
@StriplingWarrior - 不同之处在于所引用的被测方法将另一个类作为其参数之一。应该可以断言调用函数而不强制将对象作为参数传递...对吗?
标签: c# unit-testing moq