2009-11-22 7 views

Répondre

1

Cela dépend de ce que vous voulez tester. Est-ce que vous vous souciez de savoir si la méthode Add() est appelée ou non, ou voulez-vous simplement configurer une réponse standardisée qui peut être appelée ou non?

Si vous attendez l'appel: -

var mocks = new MockRepository(); 
var repo = mocks.StrictMock<IRepository>(): 

var myObj = CreateSampleObject(); 

using(mocks.Record()) 
{ 
    Expect.Call(repo.Add(myObj)).Return(myObj); 
} 

using(mocks.Playback()) 
{ 
    var target = CreateTarget(repo); 
    target.DoSomething(myObj); 
} 

Si vous ne vous inquiétez pas si elle est appelée ou non, utilisez SetUpResult au lieu de s'attendre, par exemple

SetUpResult.For(rep.Add(myObj)).Return(myObj); 
2

AdamRalph est correct, mais je préfère la syntaxe AAA de Rhino Mocks:

// arrange 
var repo = MockRepository.GenerateStub<IRepository>(); 
var myObject = CreateSampleObject(); 
repo.Stub(r => r.Add(myObj)).Return(myObj); 

// act (this assumes that the call to "SomeMethod" on "SomeClass" 
// returns the result of the IRepository.Add). 
var someClass = new SomeClass(repo); 
var result = someClass.SomeMethod(); 

// assert 
Assert.AreSame(myObject, result); 
Questions connexes