我有以下代码:
open NSubstitute
type MyClass()=
let myObject = Substitute.For<IMyInterface>()
do myObject.MyProperty.Returns(true)
do myObject.MyMethod().Returns(true)
On&#34;返回&#34; (两者)我得到了未定义的错误。等效的C#代码没有问题。在do行的末尾添加|> ignore
无济于事。我错过了什么吗?
答案 0 :(得分:1)
我知道你写道,在最后添加|> ignore
并没有帮助,但这会在我的机器上编译:
type IMyInterface =
abstract MyProperty : bool with get, set
abstract member MyMethod : unit -> bool
open NSubstitute
type MyClass() =
let myObject = Substitute.For<IMyInterface>()
do myObject.MyProperty.Returns(true) |> ignore
do myObject.MyMethod().Returns(true) |> ignore
我试图从问题中推断出IMyInterface
的定义;我弄错了吗?
答案 1 :(得分:0)
因此,在我尝试使用fsc和VS2013直接编译VS2012,VSS上的代码(Mark Seemann,以避免我的C#类)后,问题显然是VS2012问题。该代码与其他三个代码一起正常工作。
还不确定它是否使用不同版本的F#。需要进一步调查。但至少,就目前而言,在VS2012上我可以使用:
do SubstituteExtensions.Returns(myObject.MyProperty, true) |> ignore
当我需要将参数传递给方法时,它也能正常工作。