2016-02-22 56 views
1

使用FakeItEasy,在我的一個測試中,我有一個類似於下面的設置,當像這樣安裝時,底部的CallTo斷言失敗。FakeItEasy參數約束在lambda之外被評估爲null

var fakedTool = A.Fake<ITool>(); 

var concreteUnderTest = new Concrete(fakedTool); 

concreteUnderTest.doSomething(); 

var fooConstraint = A<Foo>.That.Matches(f => f.Name.Equals('Alice')); 
var barConstraint = A<Bar>.Ignored; 

A.CallTo(() => fakedTool.ObservedFunction(fooConstraint , barConstraint)) 
    .MustHaveHappened(Repeated.Exactly.Once); 

我已經放置一個斷點正上方CallTo線,以及fooConstraintbarConstraint的值均爲null

當我設置的斷言像這樣,但是,它通過:

A.CallTo(() => 
    fakedTool.ObservedFunction(
     A<Foo>.That.Matches(f => f.Name.Equals('Alice')), 
     A<Bar>.Ignored 
    ) 
).MustHaveHappened(Repeated.Exactly.Once); 

是什麼原因造成這種現象?它的目的是?

回答