2

我有一个界面,其中包含一个成员,如下所示:

void ExecuteSqlCommand(string procedureName, SqlParameter[] parameters);

我正在使用 FakeItEasy 创建一个模拟以传递给我的一个课程。

我正在测试的代码调用此方法,然后检查 SqlParameters 之一的值。调用方法时如何使用 FakeItEasy 设置该参数的 Value 属性?

我明白这可能不是从数据库中获取单个信息的最佳实践,但我正在使用现有的存储过程,其中一些具有 OUT 参数。

4

1 回答 1

6

正如您所说,这可能不是最佳做法。除此之外,我想你可以做这样的事情:

A.CallTo(() => fake.ExecuteSqlCommand(A<string>._, A<SqlParameter[]>._))
    .Invokes((string s, SqlParameter[] p) => p[someIndex].Value = yourValue);

或者,使用可读性较差但功能更强大的重载,IFakeObjectCall直接访问 a:

A.CallTo(() => fake.ExecuteSqlCommand(A<string>._, A<SqlParameter[]>._))
    .Invokes(callObject => callObject.GetArgument<SqlParameter[]>("parameters")[someIndex].Value = yourValue);
于 2011-09-15T18:28:55.257 回答