我有一个邮局,允许我发送电子邮件,以落实以下内容。
public interface IMailService
{
bool SendRegisteringEmail(RegisterModel registerModel);
bool SendMail(MailMessage mailMessage);
MailMessage CreateRegisteringMailMessage(RegisterModel registerModel);
IAppSettingsRepository AppSettingsRepository { get; set; }
ISmtpClient SmtpClient { get; set; }
}
SendRegisteringEmail功能应当叫创建RegisteringmailMessage,然后让Sendmail功能返回,SendRegisteringEmail应当返回Sendmail的Bolean。
I m using NUnit and Rhino Mocks to do my test, I m new to testing (1week) and I m practicing TDD (At least I try). My problem is I don t know how to assert that CreateRegisteringMailMessage was called when I call SendRegisteringEmail, because MailService isn t a Mocked Object. Here is my test:
[Test]
public void SendRegisteringEmail_ShouldCallCreateRegisteringMailMessage()
{
//Arrange
//MailMessage mailMessage = new MailMessage();
IMailService mailService = new MailService { AppSettingsRepository = CreateAppSettingsMockReposotory() };
//ISmtpClient smtpClientStub = MockRepository.GenerateStub<ISmtpClient>();
//mailService.SmtpClient = smtpClientStub;
//smtpClientStub.Stub(f => f.Send(mailMessage)).Return(true);
//Act
mailService.SendRegisteringEmail(ValidRegisterModel);
//Assert
mailService.AssertWasCalled(f => f.CreateRegisteringMailMessage(ValidRegisterModel));
}
I get the following error when I launch my test: FtpWeb.Tests.MailServiceTests.SendRegisteringEmail_ShouldCallCreateRegisteringMailMessage: System.InvalidOperationException : The object FtpWeb.Models.MailService is not a mocked object.
I understand why I m getting this error but now how to test my call. Since it s the same object I can t mock it to test it. If anybody can give me some lead to resolve this.
感谢。