2009-11-24 14 views
10

...Neden sahte olmayan bir yöntem null döndürdü? Ben yazmaya çalışırken bir TestMethod im yardıma ihtiyaç

Ben benim alay GetProfileFromUserName yöntemini kullanmaya çalıştığınızda ancak ben bir hata ile karşılaşırsanız, bir kullanıcı profili gösterebilir test etmek gerekir. Yöntemler null değerini döndürür. Anlamadığım şey, temelde aynı ve işe yarayan GetEmail adlı benzer bir yönteme sahip olduğum.

Bu

doesnt iş profili almak için kodudur:

mockUserRepository.Setup(gp => gp.GetProfileFromUserName(userProfile.UserName)).Returns(new Profile { ProfileID = userProfile.ProfileID }); 

Ve bu işleri e-posta, almak için kodudur.

mockUserRepository.Setup(em => em.GetEmail(new MockIdentity("JohnDoe").Name)).Returns("[email protected]"); 

Ve bu sahte aramalar ve iadeler Bir profil yerine üzerinde boş yöntemin snippet'idir:

public ActionResult ShowProfile() 
    { 
     var profile = _userRepository.GetProfileFromUserName(User.Identity.Name); 

ben yanlış yapıyorum? KullanıcıProfile.UserName GetProfileFromUserName It.IsAny() yerine yerine;

+0

'It.IsAny ()' işlevini kullanırsanız ne olur? –

cevap

11

Eğer null döndürürse, bu, Setup'un gerçek aramayla eşleşmediği anlamına gelir. userProfile.UserName Kurulum satırında doğru değeri içerdiğini kontrol edin.

Ayrıca, eşleşmeyen aramaları algılamak için numaranızı MockBehavior.Strict seçeneğiyle oluşturun.

Bu yardımcı olur umarım.

mockUserRepository.Setup(gp => gp.GetProfileFromUserName(userProfile.UserName)) 
    .Returns(() => new Profile { ProfileID = userProfile.ProfileID }); 
: Test kurulumu ("Yerleştir") sırasında mevcut olmayan bir nesneyi, döndürmeye çalışıyor herkes için
+0

Anlatım, dolaylı yöntemle bir operatör kullanmam oldu, bu yüzden yöntem derlendi, ancak aramayı eşleştirmedi. –

0

, çözüm temsilci (işlev <>) aşırı kullanmaktır
İlgili konular