有人知道相当的量量吗 It.IsAny<T> 在假性?

我想断言一种方法是用类型的实例调用的

v.Do(new Foo());

我试过了:

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

但这也接受 v.Do();

有帮助吗?

解决方案

你在 A<Foo>.Ignored (或者 A<Foo>._)等效于 It.IsAny<Foo> 在订单中。

如果您说的实际上是正确的,看来您已经击中了一个错误。我会尽快进行。

编辑我创建了以下集成测试来复制错误,但是测试通过了,所以我无法再现它,您可以提供代码示例吗?

[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);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top