c# – 为什么我不能在变量中捕获FakeItEasy期望值?
我正在使用FakeItEasy伪造一些实体框架调用,以确保正确映射一堆奇怪的遗留数据库表.
我需要断言,将具有与特定DeliveryAddress匹配的发票的客户添加到数据库中. 如果我这样做: A.CallTo(() => db.Customers.Add( A<Customer>.That.Matches( c => c.Invoices.First().Address == EXPECTED_ADDRESS) ) )).MustHaveHappened(); 代码完美无缺.我希望通过在其他地方移动期望来简化语法,但是当我这样做时: var expected = A<Customer>.That.Matches( c => c.Invoices.First().Address == EXPECTED_ADDRESS) ); A.CallTo(() => db.Customers.Add(expected)).MustHaveHappened(); 测试失败. FakeItEasy代码中发生了什么,这意味着期望表达式在内联时有效但无法在变量中捕获并在以后重用? 解决方法
答案是在
Always place Ignored and That inside A.CallTo的文档中:
不过,我对“测试失败”感到惊讶.你用的是什么版本?截至FIE 2.0.0,正如你所做的那样使用了should throw an exception System.InvalidOperationException : A<T>.Ignored,A<T>._,and A<T>.That can only be used in the context of a call specification with A.CallTo() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |