我正在使用Machine.Fakes.NSubstitute
并且想要“伪造”一个返回值,这样如果输入参数与特定值匹配,则返回模拟对象,否则返回 null。
我尝试了以下方法:
host.WhenToldTo(h => h.GetTenantInstance(Param.Is(new Uri("http://foo.bar"))))
.Return(new TenantInstance());
但它会引发以下异常:
System.InvalidCastException:无法将“System.Linq.Expressions.NewExpression”类型的对象转换为“System.Linq.Expressions.ConstantExpression”类型。
我目前的解决方法是执行以下操作:
host.WhenToldTo(h => h.GetTenantInstance(Param.IsAny<Uri>()))
.Return<Uri>(uri => uri.Host == "foo.bar" ? new TenantInstance() : null);
这有点臭。