如何使用Moq框架配置输出参数

时间:2019-06-07 19:58:22

标签: c# integration-testing moq

我有一个要尝试测试的“ GetMemberEvents”方法。我正在使用Moq 4.10.1

在此“ GetMemberEvents”方法中,我必须调用存储库方法。我需要在此存储库方法中使用Moq才能继续在“ GetMemberEvents”中进行测试。

如果一切正常,并将内容呈现到输出变量“ _salaries”中,则AreThereConfiguredValues存储库方法返回true。 我需要填充的_salaries变量,才能继续“ GetMemberEvents”方法中的逻辑测试。

我在“ GetMemberEvents”的测试方法中编写了以下代码:

_config.Setup(x => x.AreThereConfiguredValues(It.IsAny<IConfigRepository>(), out _salaries)).Returns(true);

存储库方法具有以下签名:

bool AreThereConfiguredValues(IConfigRepository storage, out (int MemberId, double Value)[] salaries)

如何使变量_salaries填充有预定义的列表?类型:

_salaries = new (int MemberId, double Value)[2];
_salaries[0] = (552, 25399.9D);
_salaries[1] = (6167, 15707.9D);

1 个答案:

答案 0 :(得分:0)

this回答中所述,您可以在方法中模拟out参数。因此,您的代码应该像这样;

_salaries = new (int MemberId, double Value)[2];
_salaries[0] = (552, 25399.9D);
_salaries[1] = (6167, 15707.9D);

_config.Setup(x => x.AreThereConfiguredValues(It.IsAny<IConfigRepository>(), out _salaries)).Returns(true);