如何模拟接受参数的方法

Bar*_*art 3 .net c# moq

我正在使用moq并想模拟一个接受out参数的方法:

protected void GetDataRow(string id, out DataRow dataRow)
Run Code Online (Sandbox Code Playgroud)

这是我试过的:

dataMock.Protected().Setup("GetDataRow", ItExpr.IsAny<string>(), ItExpr.IsAny<DataRow>());
Run Code Online (Sandbox Code Playgroud)

但是,它返回:

System.ArgumentException : Member DataManager.GetDataRow does not exist.
Run Code Online (Sandbox Code Playgroud)

如果我不改变dataRow参数out,一切都按预期工作.

在这种情况下我应该如何创建模拟?

Joh*_*nny 5

你不能使用IsAny<DataRow>out参数.而不是IsAny<DataRow>你可以创建局部DataRow变量并将其传递给mock.稍后调用mock将返回dataRow,因此您可以使用它来验证测试期望.

DataRow dataRow = new DataRow();
dataMock.Protected().Setup("GetDataRow", ItExpr.IsAny<string>(), out dataRow);
Run Code Online (Sandbox Code Playgroud)