Moq 的新手,这是一个非常简单的示例。我想模拟对我的方法“string getCode(int someID)”中使用的“int steamTest(int a, int b)”方法的调用。在 getCode 中声明并设置了用于冒烟测试的变量。问题是当我模拟对smoothTest 的方法调用时,我总是在getCode 中得到“0”的结果,但我想看到我的预定义结果“20”。我发现的唯一解决方法是重载方法并传入所有变量。但是,我不想这样做,因为我要测试的许多方法都声明并使用局部变量。使用 Moq 测试此方法的最佳方法是什么?谢谢
// Example A
public string getCode(int someID)
{
int x = 5;
int y = 5;
int z = _dataAccess.smokeTest(x, y);
return _dataAccess.getCode(someID);
}
// NOTE: Doesn't work as wanted
[Test]
public void test_getCode_TestB()
{
var x = It.IsAny<int>();
var y = It.IsAny<int>();
// NOTE: "20" is not returned, 0 is returned instead because local variables are used
_mockDataAccess.Setup(m => m.smokeTest(x, y)).Returns(20);
_mockDataAccess.Setup(m => m.getCode(234)).Returns("def345");
var …Run Code Online (Sandbox Code Playgroud)