2016-03-24 6 views
1

私は単体テストにNUnitとNS代用を使用します。NS substituteは使用する引数の仕様を決定できません

public interface IDataProvider 
{ 
    void Log(int tvmId, DateTime time, int source, int level, int eventCode, string message); 
} 

... 

var fakeDataProvider = Substitute.For<IDataProvider>(); 
... 
fakeDataProvider.Received().Log(
    Arg.Any<int>(), 
    new DateTime(2000, 1, 1), 
    0, 
    0, 
    0, 
    null); 

fakeDataProvider.Received()は、引数の仕様を使用するかを決定することはできませんメッセージをAmbiguousArgumentExceptionをスロー:私は、次があります。私はSO

Cannot determine argument specifications to use

関連しているが、私は上記のコードでそれを適用することができないで、次のを発見しました。なぜ上記のコードはあいまいですか? Received()に何か引数を受け入れるべきであることを他にどのように指定できますか?

答えて

3

Logメソッドに複数のintパラメータがあるため、それぞれの引数の仕様を使用する必要があります。

fakeDataProvider.Received().Log(
    Arg.Any<int>(), 
    new DateTime(2000, 1, 1), 
    Arg.Is(0), 
    Arg.Is(0), 
    Arg.Is(0), 
    null); 
+0

ありがとうございました。 Arg.Any <>()は、私が使ったときに例外が投げられただけなので、犯人だと思った。実際には – Drew

+0

です。しかし、この問題はArg.Anyではなく、Arg.Anyを使用したパラメータの型です。同じタイプの他のパラメータがあるので、NSubstituteはあなたがArg.Anyであることを要求したものを知らないので、同じタイプのすべてのパラメータの引数指定を指定する必要があります。 –

関連する問題