1
我使用的是Machine.Fakes.NSubstitute
,並且想要「僞造」返回值,以便如果輸入參數匹配特定值,則返回模擬對象,否則返回null。爲什麼這個Machine.Fakes參數匹配會拋出異常?
我試過如下:
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);
這是一個有點臭。
該bug在版本1.0.4中修復。即使使用'Param.Is()'也不會發生異常。 –