2

テスト間の期待値をリセットするために、以下を正常に使用しました。

MyMock.BackToRecord(BackToRecordOptions.Expectations);
MyMock.Replay();

ただし、2 番目のテストがモックされたメソッドで例外をスローしようとする場合、これは機能しないようです。

[SetUp]    
public void Setup()
{
        //reset expectations for each test
        MockRestQuestionClient.BackToRecord(BackToRecordOptions.Expectations);
        MockRestQuestionClient.Replay();
}

[Test]
public void Test1() {
    MyMock.Expect(t => t.Something()).Returns(someObject);
}

[Test]
public void Test2() {
    //this works when run individually, but fails if run after Test1
    MyMock.Expect(t => t.Something()).Throw(new Exception());
}

私が間違っていることはありますか?

ありがとう!

4

1 に答える 1

0

異なるテストケースに同じモックを使用しているようです。
テスト間でモックを共有する特別な理由はありますか?

各テストごとに新しいモック オブジェクトをインスタンス化すれば、問題は解消されるはずです (Setup()メソッド内)。

UPDATEここ
でテスト間でデータを共有するための良いコメントを読んでください。

UPDATE2
基本クラスを使用してモックを設定する場合は、基本クラスに特定のメソッドを設定することをお勧めします(例:) Init()。このメソッドは属性でマークする必要があります[SetUp]
結果としてInit()、各テストの前に実行されます。そして、各テストで新しいモックが使用されます。したがって、既存のモックをリセットする必要はありません。

于 2012-12-15T19:30:46.957 に答える