Aşağıdaki birim testi var: Ben o sahte 0 kez invocked söylüyor çünkü bu konuda kafam karıştıNeden Moq'um hiçbir talepte bulunulmadığını iddia etmiyor, ancak istisnada atılan çağrıyı gösteriyor?
Test method
MyApp.Tests.Commands.Users.ResetUserPasswordCommandTests.Execute_Sends_Email_To_User
threw exception:
Moq.MockException:
Expected invocation on the mock once, but was 0 times: x => x.Send("", "", "")
Configured setups:
x => x.Send(It.Is<String>(y => y == ._user.Email), It.IsAny<String>(),
It.IsAny<String>()), Times.Once
Performed invocations:
IEmailUtils.Send("[email protected]", "Password Recovery",
"Your new password is: 7Xb79Vb9Dt")
şu istisna mesaj bu çalıştırır
[TestMethod]
public void Execute_Sends_Email_To_User()
{
// Setup
InitializeTestEntities();
_mock.Setup(x => x.Send(It.Is<string>(y => y == _user.Email),
It.IsAny<string>(), It.IsAny<string>()));
// Act
new ResetUserPasswordCommand(_unitOfWork,
_mock.Object).WithUserId(_user.Id).Execute();
// Verify
_mock.Verify(x => x.Send("", "", ""), Times.Once());
}
olsun yine de başarılı bir çağrı olduğunu gösteriyor. Neyi yanlış yapıyorum? o geçirilen argümanları eşleşmiyor neden
Bu işe yaradı! 'Kur()' yönteminin anlamı nedir o zaman? – KallDrexx
Kurulum/Doğrulama yöntemi ile Kurulum'u kullanmanızın tek nedeni argümanları döndürmektir. Herhangi bir şey döndürmek zorunda olmadığından, herhangi bir kurulum yoksa bir yöntemin çağrıldığını doğrulayabilirsiniz. Bu etkili bir Stub olur, ancak Rhino Moq'un aksine Kur'u kullanır çünkü bir Mock ile bir Stub arasında gerçekten bir fark yoktur, gerçekten onu nasıl kullanırsınız. Bazı insanlar aynı fikirde olmayabilir, ancak işleri basitleştirir, daha gevşek bir şekilde bağlar ve testler tek bir şeye odaklanabilir ve gerçekleşmesi gereken ya da olmaması gereken bir alay konusu hakkında endişe duymaz. – aqwert