2016-05-25 8 views
-1

I Mock Test wie diese erstellt haben:GetField Wert in Rhino Mock Tests

IGroup studentGrp = MockRepository.GenerateMock<IGroup>(); 
stubApplication.Stub(x => x.GetGroup("STUDENT")) 
       .Return(studentGrp); 
studentGrp.Stub(x => x.EntityCount) 
      .Return(1); 
stubApplication.Stub(x => x.GetGroup("STUDENT").GetEntity(0).GetField("role_numb")) 
       .Return(genericFieldValue); 

Code:

for(int i = 0; i < StudentApplication.GetGroup("STUDENT").EntityCount; i++) 
{ 
    if (StudentApplication.GetGroup("STUDENT").GetEntity(i).GetField("role_num").GetInternalValue() == "Y") 
    { 
     //Do Something.. 
    } 
} 

Aber ich bin nicht in der Lage über Code auszuführen erhalte: Nullreferenceexception.

+2

kann helfen, zu debuggen, wenn Sie Variablen und separate Anweisungen verwenden würden, anstatt alle diese Methodenaufrufe zu verknüpfen, z. B. var entity = StudentApplication.GetGroup ("STUDENT"). GetEntity (i) ; var field = entity.GetField ("role_num"); - Sie bekommen den Punkt –

+1

@ AlexandruMărculescu Sie die Antwort angeboten, ohne es zu wissen ... Rhinomocks unterstützt nicht Lambda-Aggregation .... Ich erklärte mehr in meiner Antwort –

Antwort

1

RhinoMocks nicht Lambda-Aggregation unterstützen:

stubApplication.Stub(x => x.GetGroup("STUDENT").GetEntity(0).GetField("role_numb")) 
      .Return(genericFieldValue); 

Die obige Snippet wird in RhinoMocks (Moq Unterstützung Lambda-Aggregation) nicht funktionieren.

Sie müssen die Lambda aufzuspalten:

stubApplication.Stub(x => x.GetGroup("STUDENT")) 
      .Return(studentGrp); 
studentGrp.Stub(x => x.GetEntity(0)) 
      .Return(fakeEntity); 
fakeEntity.Stub(x => x.GetField("role_numb")) 
      .Return(fakeField); 
fakeField.Stub(x => x.GetInternalValue()) 
     .Return("Y"); 

BTW, nur durch die Namen der Objekte zu lesen und Methoden es scheint, dass alle Instanzen sind Instanzen von pocos, wenn so dass Sie nicht zu fälschen müssen sie überhaupt (verwenden Sie echte Instanzen ...)

Verwandte Themen