2016-04-05 19 views
0

Bir gün boyunca kafamı bunun üzerine dövdüm. Bununla ilgili internette bir şey yok. Stubbed işlevim var. Gergedan alayları içinde çağrıldığında, sadece null döndürür ancak farklı bir değer döndürmesini istiyorum. Bir göz atın:Rhino Mocks saplama sadece null değerini döndürür

[Test] 
public void GetViewingInfo_Throw_WhenViewingIDReturnsNull() 
{ 
    _managementDataController 
      .Stub(s => s.GetManagementByID(1)) 
      .Return(new Info(){ApprovedByEmployeeID = 123}); 

    Assert.Throws<InvalidOperationException>(() => 
      _managementBusinessController.GetViewingInfo(1)); 
} 

Şimdi temelde .Return(new Info(){ApprovedByEmployeeID = 123}); her zaman null döndürür. Yanlış bir şey mi yapıyorum?

var manage = _managementDataController.GetManagementByID(managementID); 
InvalidValueGuard.ThrowInvalidOperationExceptionOn(() => manage == null, ""); 

Ben InvalidValueGuard bir kesme noktası koymak ve yönetmek değişken her zaman null döndürür: Burada

GetViewingInfo kodudur.

+0

"GetViewingInfo", "GetViewingInfo" ile çağrıldı? Bu kodu gösterebilir misin? – stuartd

+0

'GetManagementByID' aslında '1' argümanıyla çağrılıyor mu? Arama eşleşmezse varsayılan değer iade edilir. – Lee

+0

Gönderiyi düzenledim – Luke101

cevap

0

Bu sorunu somut bir sınıf oluşturarak düzelttim.

Info info = new Info(); 

_managementDataController 
      .Stub(s => s.GetManagementByID(1)) 
      .Return(info); 

Bunun neden işe yaramadığı konusunda hiçbir fikrim yok. Dönüş yönteminde bir sınıf gönderdiğinizde kapanışın çalışmadığını tahmin ediyorum.

İlgili konular