首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我不能在变量中捕获FakeItEasy期望?

为什么我不能在变量中捕获FakeItEasy期望?
EN

Stack Overflow用户
提问于 2017-05-04 11:10:26
回答 3查看 1.8K关注 0票数 6

我使用FakeItEasy伪造一些实体框架调用,以确保一堆奇怪的遗留数据库表被正确地映射。

我需要断言,正在将具有与特定DeliveryAddress匹配的发票的客户添加到数据库中。

如果我这么做:

代码语言:javascript
运行
复制
A.CallTo(() => db.Customers.Add(
    A<Customer>.That.Matches(
        c => c.Invoices.First().Address == EXPECTED_ADDRESS)
    )
)).MustHaveHappened();

代码工作得很好。我想通过将期望转移到其他地方来简化语法,但是当我这样做时:

代码语言:javascript
运行
复制
var expected = A<Customer>.That.Matches(
    c => c.Invoices.First().Address == EXPECTED_ADDRESS)
);
A.CallTo(() => db.Customers.Add(expected)).MustHaveHappened();

测试失败了。在FakeItEasy代码中发生了什么,这意味着期望值表达式在内联时工作,但不能在变量中捕获并在以后重用?

EN

Stack Overflow用户

发布于 2017-05-04 11:25:24

对于期望值表达式为什么内联地工作,不是一个直接的答案,但不是在一个变量中(我正在做这个工作,很快就会编辑答案!)

然而,我不是.That.Matches的粉丝

如果有一个以上的话,火柴可能会变得有点笨重。此外,如果任何匹配失败,MustHaveHappened调用将引发异常。让我不知道失败发生在哪里。

我更喜欢这样做:

代码语言:javascript
运行
复制
Customer addedCustomer;
A.CallTo(() => a.Add(A<Customer>._))
    .Invokes(c => addedCustomer = c.GetArgument<Customer>(0));

//Individual Asserts on addedCustomer
Assert.AreEqual(EXPECTED_ADDRESS, addedCustomer.Invoices.First().Address);
票数 4
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43781237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档