5

FakeItEasy の Moq に相当するものを知っている人はいますIt.IsAny<T>か?

メソッドが Type のインスタンスで呼び出されたことをアサートしたい

v.Do(new Foo());

私は試した:

A.CallTo(() => v.Do(A<Foo>.Ignored)).MustHaveHappened();

しかし、これも受け入れv.Do()ます;

4

1 に答える 1

11

あなたは正しいですA<Foo>.Ignored(またはA<Foo>._) はIt.IsAny<Foo>Moq に相当します。

あなたの言うことが実際に正しいとしたら、バグにぶつかったようです。私はできるだけ早くそれに乗ります。

編集 バグを再現するために次の統合テストを作成しましたが、テストに合格したため再現できません。コードサンプルを提供していただけますか?

[Test]
public void Should_fail_assertion_when_overload_with_no_parameters_has_been_called_but_the_assertion_is_for_overload_with_parameters_but_ignoring_them()
{
    // Arrange
    var fake = A.Fake<ITypeWithOverloadedMethods>();

    // Act
    fake.Foo();

    // Assert
    Assert.Throws<ExpectationException>(() => A.CallTo(() => fake.Foo(A<int>._)).MustHaveHappened());
}

public interface ITypeWithOverloadedMethods
{
    void Foo();
    void Foo(int argument);
}
于 2010-12-11T22:05:08.717 に答える