我遇到了測試問題。出於某種原因,我還沒有弄清楚,我無法訪問一個n對象的公共屬性。NUnit測試中屬性的MissingMethodException
我的階級是這樣的:
public class FakeSMTPConnector : ISMTPConnector
{
private bool _MailSent = false;
public bool MailSent
{
get { return _MailSent; }
set { _MailSent = value; }
}
private MailMessage _Message = null;
public MailMessage Message
{
get { return _Message; }
set { _Message = value; }
}
public FakeSMTPConnector()
{
}
public void SendMail(MailMessage mail)
{
_MailSent = true;
_Message = mail;
}
}
我用這個來模擬SMTPConnection和發送電子郵件。處理電子郵件的類將使用此SMTPconnector來僞造傳送。
我的測試如下:
[Test]
public void EnviarMensagemContactoSentTest()
{
//arrange
FakeSMTPConnector connector = new FakeSMTPConnector();
EmailManager manager = new EmailManager(connector);
//act
manager.SendMessage("[email protected]", "abc", "def", "ghi");
//assert
Assert.IsNotNull(manager, "Manager instance not created");
Assert.IsTrue(connector.MailSent, "Message not sent");
Assert.IsNotNull(connector.Message);
}
當NUnit的嘗試最後的斷言,即acesses Message屬性,它失敗的例外是沒有多大意義:
System.MissingMethodException : Method not found: 'System.Net.Mail.MailMessage Project.FakeSMTPConnector.get_Message()'.
我做錯了什麼?我開始添加測試和做一些項目refoactoring很多這是有點新的,也許是我讓我困惑的東西真正的基本在我的頭...
謝謝!
你試過乾淨的構建? –
您可以添加命名空間和EmailManager類以及堆棧跟蹤嗎? – eyossi
同意@ DanielA.White做一個完整的重建。你是否也在運行NUnit測試運行器?如果是的話,你是否確定在你構建它們之後重新加載測試? –