我遇到了测试问题。出于某种原因,我还没想到,我无法访问n对象的公共属性。
我的课程如下:
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并发送电子邮件。然后,处理电子邮件的类将使用此SMTP连接器伪造传递。
我的测试如下:
[Test]
public void EnviarMensagemContactoSentTest()
{
//arrange
FakeSMTPConnector connector = new FakeSMTPConnector();
EmailManager manager = new EmailManager(connector);
//act
manager.SendMessage("a@a.com", "abc", "def", "ghi");
//assert
Assert.IsNotNull(manager, "Manager instance not created");
Assert.IsTrue(connector.MailSent, "Message not sent");
Assert.IsNotNull(connector.Message);
}
当Nunit尝试最后一个断言时,它会消除Message属性,它失败并出现一个没有多大意义的异常:
System.MissingMethodException : Method not found: 'System.Net.Mail.MailMessage Project.FakeSMTPConnector.get_Message()'.
我做错了吗?我开始在一个项目中添加测试并进行一些重新设计,所以很多事情都是新的,可能是因为我在某些事实上基本上让我感到困惑......
谢谢!
答案 0 :(得分:1)
我知道这是旧的,但我遇到了同样的问题。清洁解决方案然后进行重建对我来说不起作用。
从GAC中删除有问题的dll(C:\ Windows \ assembly)为我修复了它。
答案 1 :(得分:0)
重新启动Visual Studio帮了我这个忙。