【问题标题】:Convert Rhino Mock to NSubstitute将 Rhino Mock 转换为 NSubstitute
【发布时间】:2019-09-06 14:04:53
【问题描述】:

目前我正在将 Rhino Mock 的一些实现更改为 NSubstitute。现在我在这里遇到了一些困难。 有人可以帮我吗?

            var provider = MockRepository.GenerateStub<IProvider>();
        provider.Stub(e => e.InitMethod(Arg<Info>.Is.Anything, "ABC")).WhenCalled(
            o =>
            {
                validProvidersDto.ExportFolder = (o.Arguments[0] as Info).Name;
                o.ReturnValue = validProvidersDto;
            }).Return(validProvidersDto);

所以逻辑是:当通过提供程序存根调用 InitMethod 时。 WhenCalled 中的代码将执行并修改某事。然后它会返回。

现在我确实将其更改为 NSubstitute 但它不兼容

            var provider = Substitute.For<IProvider>();
        provider.When(a => a.InitMethod(Arg.Any<Info>(), "ABC")).Do(
            o =>
            {
                validProvidersDto.ExportFolder = (o.Arguments[0] as Info).Name;
                o.ReturnValue = validProvidersDto;
            }).Returns(validProvidersDto);

我不知道如何正确地将这个 WhenCalled 从 Rhino Mock 转换为 NSubstitute。

感谢您的帮助!

【问题讨论】:

  • 问题目前尚不清楚。 sth?
  • 当前和预期的行为是什么。
  • 让我们提供一下 IProvider 的外观。
  • 提供 IProivder 和 validProvidersDto 对象,这个测试的预期,所以我们可以帮助你
  • 某事。表示WhenCalled Function中的代码。恐怕我无法根据 IProvider 和 validProvidersDto 提供任何进一步的信息,因为它们在某种程度上与公司规则有关。尽管如此,这里的重点是如何将WhenCalled 方法从Rhino Mock 转换为NSubstitute。 WhenCalled 方法中的信息当前无关紧要。到目前为止,我所知道的是从“Arg.Is.AnyThing”转换为“Arg.Any()”和“MockRepository.GenerateStub”转换为“Substitute.For”。我假设 NSubstitute 没有为“WhenCalled”的情况提供相同的功能。

标签: c# rhino-mocks nsubstitute


【解决方案1】:

我认为您可以使用a Returns callback

var provider = Substitute.For<IProvider>();
provider.InitMethod(Arg.Any<Info>(), "ABC").Returns(
    o => {
        validProvidersDto.ExportFolder = o.Arg<Info>().Name;
        return validProvidersDto;
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多