A SMTP server mock is basically a fake SMTP server which can be used for unit testing of applications which send email messages. It acts as a real smtp server, except that the incoming messages are locally stored and not actually delivered . This can be quite usefull if you are using real data for testing. ;-)
1: [Test]
2: public void MailTest ()
3: {
4: SmtpMock smtpServerMock = new SmtpMock ();
5: smtpServerMock.Start();
6: System.Web.Mail.SmtpMail.SmtpServer = "localhost";
7: System.Web.Mail.SmtpMail.Send("somebody@foo.com", "everybody@bar.com", "This is the subject", "This is the body.");
8: smtpServerMock.Stop ();
9:
10: Assert.AreEqual (1, smtpServerMock.Sessions.Count);
11: SmtpSession session = (SmtpSession) smtpServerMock.Sessions[0];
12: Assert.IsTrue (session.SessionProtocol.IndexOf("somebody@foo.com") > 0 );
13: Assert.IsTrue (session.SessionProtocol.IndexOf("everybody@bar.com") > 0 );
14: Assert.IsTrue (session.SessionProtocol.IndexOf("This is the subject") > 0 );
15: Assert.IsTrue (session.SessionProtocol.IndexOf("This is the body.") > 0 );
16:
17: }