gpt4 book ai didi

unit-testing - 在 Moq 中,是否有一种简单的方法可以使 Setup() 返回 null,而不管提供的所有参数如何?

转载 作者:行者123 更新时间:2023-12-02 01:11:36 30 4
gpt4 key购买 nike

使用 Moq,我想调用 Setup(),以便它始终返回 null,而不管提供的任何参数。

我是这样做的:

_myMock.Setup(mock => mock.MyMethod(
It.IsAny<int?>(),
It.IsAny<String>(),
It.IsAny<String>(),
It.IsAny<String>())).
Returns((IList<Item>)null
);

只返回 null 已经很长了。 我可以让它更简单吗?

最佳答案

只是不要进行设置,使用默认的 MockBehavior.Loose 它将返回默认值 - 类为 null,数字为 0,结构为默认值。

注意:如果返回类型是 IEnumerable 或 Array,它将返回空集,而不是 null。在这种情况下,您需要一个明确的设置。

很奇怪,它不返回空 IList,因为 IList 是 IEnumerable。可能这是一个错误,但无论如何,它可以满足您的要求:)

这两个示例都有效(除了 Moq 之外,还使用 ​​FluentAssertions 和 NUnit):

    public interface ISomeDummy
{
IList<int> Nums(int i);
}

[Test]
public void NullSetupTestWithMockOf()
{
var mock = Mock.Of<ISomeDummy>();

var items = mock.Nums(1);
items.Should().BeNull();
}

[Test]
public void NullSetupTestWithoutSetup()
{
var mock = new Mock<ISomeDummy>();

var items = mock.Object.Nums(1);
items.Should().BeNull();
}

关于unit-testing - 在 Moq 中,是否有一种简单的方法可以使 Setup() 返回 null,而不管提供的所有参数如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16810131/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com