F# 上与 NSubstitute 的模拟接口不允许 Returns
Mocked Interface with NSubstitute on F# does not allow Returns
我有以下代码:
open NSubstitute
type MyClass()=
let myObject = Substitute.For<IMyInterface>()
do myObject.MyProperty.Returns(true)
do myObject.MyMethod().Returns(true)
On "Returns"(两者)我收到未定义的错误。等效的 C# 代码可以正常工作。在 do 行的末尾添加 |> ignore
没有帮助。我是不是遗漏了什么?
我知道你写道在末尾添加 |> 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
的定义;我是不是看错了?
因此,在我通过使用 fsc 和 VS2013 的直接编译在 VS2012、fsi 上尝试代码(Mark Seemann 的,以避免我的 C# class)之后,问题显然是 VS2012 问题。该代码与其他三个代码一起正常工作。
还不确定它是否使用不同版本的 F#。将需要进一步调查。但至少,现在,在 VS2012 上我可以使用:
do SubstituteExtensions.Returns(myObject.MyProperty, true) |> ignore
当我需要将参数传递给方法时,它也能正常工作。
我有以下代码:
open NSubstitute
type MyClass()=
let myObject = Substitute.For<IMyInterface>()
do myObject.MyProperty.Returns(true)
do myObject.MyMethod().Returns(true)
On "Returns"(两者)我收到未定义的错误。等效的 C# 代码可以正常工作。在 do 行的末尾添加 |> ignore
没有帮助。我是不是遗漏了什么?
我知道你写道在末尾添加 |> 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
的定义;我是不是看错了?
因此,在我通过使用 fsc 和 VS2013 的直接编译在 VS2012、fsi 上尝试代码(Mark Seemann 的,以避免我的 C# class)之后,问题显然是 VS2012 问题。该代码与其他三个代码一起正常工作。
还不确定它是否使用不同版本的 F#。将需要进一步调查。但至少,现在,在 VS2012 上我可以使用:
do SubstituteExtensions.Returns(myObject.MyProperty, true) |> ignore
当我需要将参数传递给方法时,它也能正常工作。