4

我在测试时遇到问题。出于某种原因,我还没有弄清楚,我无法访问对象的公共属性。

我的班级如下:

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()'.

我做错什么了吗?我开始添加测试并对一个项目进行一些重构,所以很多这都是新的,可能是我在脑海中对一些真正基本的东西感到困惑......

谢谢!

4

2 回答 2

2

我知道这是旧的,但我有同样的问题。清洁解决方案然后进行重建对我不起作用。

从 GAC (C:\Windows\assembly) 中删除有问题的 dll 为我修复了它。

于 2013-01-04T22:22:07.993 回答
0

重新启动 Visual Studio 为我做到了。

于 2019-10-08T21:37:10.683 回答