2012-11-30 4 views
14

Was ist der Unterschied zwischen Rhino-Mocks Stub und erwarten Sie hier: Sieht für mich, dass sie sich genau gleich verhalten?Was ist der Unterschied zwischen Rhino-Mocks Stub und erwarten

mockContext.Stub(x => x.Find<Blog>()) 
    .Return(new List<Blog>() 
    { 
     new Blog() { Id = 1, Title = "Test" } 
    }.AsQueryable()); 

mockContext.Expect(x => x.Find<Blog>()) 
    .Return(new List<Blog>() 
    { 
     new Blog(){Id = 1,Title = "Title"}, 
     new Blog(){Id=2,Title = "no"} 
    }.AsQueryable()); 

Antwort

18

Stub()definiert das Verhalten für Stub-Objekt.
Expect() definiert das Verhalten und die Erwartung für verspottetes Objekt.

Also, wenn Sie, dass verspottet Methode überprüfen müssen genannt wurde, sollten Sie Expect verwenden:

var mockContext = MockRepository.GenerateMock<IContext>(); 
mockContext.Expect(x => x.Find<Blog>()).Return(new List<Blog>()); 

Jetzt nach Testaktion vervollständigen Sie in der Lage sind, um zu überprüfen, dass expectaions erfüllt sind:

mockContext.VerifyAllExpectations(); 

Wenn Sie das Methodenverhalten stubben müssen, können Sie Stub():

var mockContext = MockRepository.GenerateStub<IContext>(); 
mockContext.Stub(x => x.Find<Blog>()).Return(new List<Blog>()); 
verwenden
+0

Expect() ist wichtig, damit der Entwickler den Code zur Überprüfung der Erwartung einsetzen kann. Wenn die Funktion .Find () entfernt wird, kann VerifyAllExpectations() dies verfolgen. Stub kann nicht. Wenn Sie die Erwartungen nicht überprüfen, können Sie einfach Stub verwenden. –

2

Wenn Sie Expect für eine Methode in diesem Fall x.Find() verwenden, wenn Ihre Methode während des Tests nicht aufgerufen wird mockContext.VerifyAllExpectations(); wird versagen.

Verwandte Themen