0

Machine.Fakes を 1.0.1 からバージョン 1.7 に更新した後、「WithFakes はまだ初期化されていません。静的初期化子から呼び出していますか?」というメッセージが表示されます。エラー/例外。

私は次のようにテストを構築しています:

[TestFixture]
public class MailSenderTests : WithSubject<MailSender>
{
    [TestFixture]
    public class TheSendMethod : AssertionHelper
    {
        [Test]
        public void Test_that_exception_is_thrown_if_no_recievers()
        {
            Expect(() => Subject.Send(string.Empty, string.Empty, recievers: null), Throws.InstanceOf<ArgumentException>());
        }
    }
}

SUT でテストしている各メソッドのクラスがあります。

誰かが私が間違っていることを教えてもらえますか?

4

2 に答える 2

0

Machine.Fakes を意図したとおりに使用していません。これはMachine.Specificationsの拡張であり、それなしでは意味がありません。コード例で他のテスト フレームワークを使用しています。この非互換性は、導入された明示的なエラー メッセージを除けば、バージョンとは関係ありません。

shamp00 の回答を拡張するには:

using System;
using Machine.Fakes;
using Machine.Specifications;

namespace SOAnswers
{
    [Subject(typeof(MailSender), "Sending an Email")]
    public class When_no_receivers_are_specified : WithSubject<MailSender>
    {
        static Exception exception;

        Because of = () =>
            exception = Catch.Exception(() => Subject.Send(string.Empty, string.Empty, receivers: null));

        It should_throw_an_exception = () =>
            exception.ShouldBeOfType<ArgumentException>();
    }
}

これは表現力が高いと思います。:-) ただし、Machine.Specifications を使用したくない場合は、より適切な自動モック フレームワークを探す必要があると思います。

于 2013-09-06T17:02:25.640 に答える