假装很简单:调用不起作用

时间:2016-10-18 11:38:20

标签: c# mocking fakeiteasy

我想检查是否使用正确的错误列表调用了以下方法。

void ShowErrorCollection(string description, List<string> errors);

我的虚拟配置看起来像这样,我试图将给定的列表保存到lokal字段:

 A.CallTo(() => dataPresenter.ShowErrorCollection(A<string>.Ignored, A<List<string>>.Ignored))
    .Invokes((string _, List<string> givenErrors) => this.errors = givenErrors);

这不起作用。错误集合总是空的,我没有收集。我做错了什么?

修改

好吧,这似乎是我的代码中的一个错误。我写下了以下测试,它是绿色的:

[Test]
public void name()
{
    var errorHandler = A.Fake<IErrorHandler>();
    A.CallTo(() => errorHandler.ShowErrorCollection(A<string>.Ignored, A<List<string>>.Ignored))
        .Invokes((string _, List<string> givenErrors) => this.errors = givenErrors);

    errorHandler.ShowErrorCollection("bla", new List<string>() {"Hallo"});

    this.errors.Should().NotBeEmpty();
    this.errors.First().Should().Be("Hallo");
}

1 个答案:

答案 0 :(得分:0)

有同样的问题,这似乎是执行的顺序。

Invokes不支持OOO,这意味着你需要坚持AAA才能真正发挥作用。

安排:使用Invokes配置假。 行动:触发CallTo正在评估的任何内容。