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);
少し臭いです。