MissingMethodException when testing a function that takes a function parameter

Viewed 586

I am using FsUnit 2.1 (with NUnit 3.2) to write tests for an F# project. Here is a simple module:

namespace Library1
module LibraryFunctions =
    let Execute f1 = f1()
    let Id x = x

And here are my tests:

namespace Tests
open FsUnit
open NUnit.Framework
open Library1

[<TestFixture>]
type Tests() =

    [<Test>]
    // Passes
    member x.``LibraryFunctions.Id should return the value``() =
        LibraryFunctions.Id 42 |> should equal 42

    [<Test>]
    // Fails
    member x.``LibraryFunctions.Execute should return the result of the function``() =
        let f() = 42
        LibraryFunctions.Execute f |> should equal 42

The second test fails (in NCrunch and ReSharper) with the message:

System.MissingMethodException : Method not found: '!!0 Library1.LibraryFunctions.Execute(Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,!!0>)'.

If I put the module under test in the same code file as the tests (rather than in a separate VS project) the test passes. My suspicion is that this is due to some issue with NUnit and F#/C# interop. If so, how can it be resolved?

1 Answers
Related