F#上的NSubstitute模拟接口不允许返回

时间:2015-02-24 10:57:58

标签: f# c#-to-f# nsubstitute

我有以下代码:

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无济于事。我错过了什么吗?

2 个答案:

答案 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

当我需要将参数传递给方法时,它也能正常工作。