0


1

私はユニットテストにMoqを使用しています、そして私はこのような期待を設定しました:

myMock.Expect(w => w.MyMethod(It.IsAny()、It.IsAny()、It.IsAny()、It.IsAny()、null)).Returns(myResult);

それがあざけっている方法は次のとおりです。

logger.WriteLogItem(string1、string2、string3、System.Exception、IEnumerableInstantiation);

これは正常に構築され実行されますが、VerifyAll()は成功せず、エラーは次のようになります。

Moq.MockVerificationException:次の期待に応えられませんでした:IMyClass l => l.MyMethod(It.IsAny()、It.IsAny()、It.IsAny()、It.IsAny()、null)

それで、何らかの理由で例外を文字列に変更します。

誰かがこれを以前に見たことがありますか/それがなぜこれをしているのか、そして私がそれを修正したり回避したりするために何ができるのか、何か考えがありますか?

ありがとう

2 Answer


2


ああ、それは新人の間違いでした! そして、変換の問題は、あちこちに出てこないクレイジーな答えを探して私をインターネットの周りを追いかけるように設計されているだけのものだった。

myMock.Objectを呼び出し元のコマンドに渡していませんでした。


0


さて、私はパラメータとして例外を持つテストメソッドを作成し、上記のようにmoqを使ってそれを呼び出しました。 そのため、それ自体がパラメータとしてExceptionを渡すことに問題はないようです。

また、最初のパラメータを列挙値からIt.IsAny列挙に変更しました。 だからから

myMock.Expect(w => w.MyMethod(** MyEnum.Value **、It.IsAny()、It.IsAny()、It.IsAny()、null))
.Returns(myResult);

myMock.Expect(w => w.MyMethod(** It.IsAny()**、It.IsAny()、It.IsAny()、It.IsAny()、null))
.Returns(myResult);

そして私が得た出力は次のとおりです。

IMyClass l => l.MyMethod(IsAny()、IsAny()、IsAny()、IsAny()、null)

それで、それは最初のパラメータの型を取り、それを何らかの理由で他のすべてに適用しているように見えます…​..