如何使用FakeItEasy更新参数的属性

Jon*_*son 2 fakeiteasy

我有一个界面,其中包含一个看起来像这样的成员:

void ExecuteSqlCommand(string procedureName, SqlParameter[] parameters);
Run Code Online (Sandbox Code Playgroud)

我正在使用FakeItEasy创建对此的模拟,以传递给我的一个类。

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

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

Pat*_*gne 6

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

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

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

A.CallTo(() => fake.ExecuteSqlCommand(A<string>._, A<SqlParameter[]>._))
    .Invokes(callObject => callObject.GetArgument<SqlParameter[]>("parameters")[someIndex].Value = yourValue);
Run Code Online (Sandbox Code Playgroud)