如何使用 NSubstitute 中的任何字符串键模拟索引器返回值?

问题描述 投票:0回答:1

我在接口上定义了一个仅获取索引器

public interface ISomeInterface
{
  string this[string key] { get; }
}

在带有 Moq 的单元测试中,any 字符串参数作为索引器键是有效的:

Mock<ISomeInterface> mock = new();
mock
  .Setup(m => m[It.IsAny<string>()]) // <-- valid
  .Returns("anything for all string key");

不幸的是,在 NSubstitute 中,类似的似乎是不可能的:

ISomeInterface mock = Subtitute.For<ISomeInterface>();
mock[Arg.Any<string>()] // <-- invalid
  .Returns("anything for all string key");

我知道可以为特定键设置模拟索引器,如下线程所示:
如何在 NSubstitute 中使用私有 setter 来模拟对象的索引器?

如何为 NSubtitute 中的 Any 键输入参数设置模拟索引器返回值?

c# unit-testing nsubstitute
1个回答
0
投票

使用

mock[Arg.Any<string>()]
按预期工作:

[Test]
public void IndexerSubTest()
{
    ISomeInterface mock = Substitute.For<ISomeInterface>();
    mock[Arg.Any<string>()]
        .Returns("anything for all string key");
    Assert.That(mock["qq"], Is.EqualTo("anything for all string key"));
}

演示 @dotnetfiddle.net

© www.soinside.com 2019 - 2024. All rights reserved.