2011-12-09 43 views
1

我怎麼這個MOQ代碼轉換:FakeItEasy回調實現

fooMoq.Setup(x => x.SayHello("xxx")).Returns("hello").Callback((string name) => 
       { 
        Assert.AreEqual(name, "xxx"); 
       }); 

FakeItEasy

回答

1

我認爲你必須做這樣的:

A.CallTo(() => foo.SayHello("name")).Returns("hello"); 

BTW:你爲什麼要使用fakeiteasy,它看起來對我來說比moq那麼強大?

+2

它怎麼那麼強大?如果有什麼更強大的,但我說他們幾乎是平等的。這是一個品味問題。 –

+0

功率也不是一切。語法非常重要。我從Rhino Mocks轉換到FakeItEasy的主要原因之一是語法更具可讀性。有些人也使用[NSubstitute](http://nsubstitute.github.com/),看起來不錯。 –

+0

我認爲FakeItEasy和MOQ幾乎是一樣的(在我看了FakeItEasy之後)。當時我們必須決定我們公司採用哪種模擬框架,最小起訂量比其他所有框架都強大。他們是第一個使用lambda語法的人。在做出這個決定之後,如果其他框架發生了變化,我不會每個月都看一次。如果你真的需要改變,你只會重寫數以千計的單元測試給我們另一個模擬框架。 – Fischermaen

2
A.CallTo(() => fooMoq.SayHello("xxx")).Invokes((string name) => { Assert.AreEqual(name, "xxx"); }).Returns("hello"); 
0

試試這個:

A.CallTo(() => foofake.SayHello("name")).WithAnyArguments().Returns("xxx");  
var foo=new foo(foofake);  
var responseReturned=foo.Functioncall(name); 
Assert.AreEqual(responseReturned, "xxx");