为什么即使在NSubstitute中排列方法,它也总是返回Null结果



我试图安排一个工厂来返回一个服务实例。

然后我安排了这个服务,但是服务中的方法总是返回null,甚至我安排了方法,为什么?

这是我的示例代码,有人能帮我吗?提前感谢!

using Moq;
using NSubstitute;
using Xunit;
namespace ConsoleApp1
{
public interface IFactory
{
IMyService CreateInService(int number);
}
public  interface IMyService
{
(Status?,Status?)GetName(string name);
}

public enum Status
{
UnKnown = 0,
}

public class TupleTest
{
[Fact]
public void GetTupleTest()
{
(Status?,Status?) exceptedStatusTuple = (Status.UnKnown,Status.UnKnown);

var factory = Substitute.For<IFactory>();
var myService = Substitute.For<IMyService>();
factory.CreateInService(It.IsAny<int>()).Returns(myService);
myService.GetName(It.IsAny<string>()).ReturnsForAnyArgs(exceptedStatusTuple);
var result = factory.CreateInService(100).GetName("test");

//result.item1 is null, it should be Status.UnKnown!
Assert.Equal(result.Item1,exceptedStatusTuple.Item1);
//result.item2 is null,it should be Status.UnKnown!
Assert.Equal(result.Item2,exceptedStatusTuple.Item2);
}
}
}

看起来您混淆了Moq和NSubstitute调用。尝试注释掉using Moq;行,并使用该测试修复编译错误。

我可以看到的一个例子是It.IsAny是Moq调用。对于N取代物,它需要是Arg.Any

最新更新