【发布时间】: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