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

私はこれが古いことを知っていますが、私は同じ問題を抱えていました。ソリューションをクリーニングしてから再構築を実行しても、うまくいきませんでした。

問題のあるdllをGAC(C:\ Windows \ assembly)から削除すると、修正されました。

于 2013-01-04T22:22:07.993 に答える