记录列表单元测试失败

时间:2015-12-16 22:26:30

标签: unit-testing f#

我有以下记录:

namespace FunctionalInnovate.Domain

module Voting=

open System

    type Vote = {
        VoteId : int
        SuggestionId : int
        VotePreference : int
    }

    type Suggestion = {
        SuggetionId : int
        SuggestionText : string
    }

    type User = {
        UserId : int
        Votes : Vote list
    }

从这些记录中,我创建了以下单元测试:

module ``Voting Tests``

open NUnit.Framework
open FsUnit
open FunctionalInnovate.Domain.Voting

[<Test>] 
let``Get Vote from given SuggestionId``()=

    let votePreference = 1 

    let vote1 = { VoteId = 1; SuggestionId = 34; VotePreference = votePreference }
    let vote2 = { VoteId = 2; SuggestionId = 654; VotePreference = votePreference}

    let votes = [ vote1; vote2; ]

    let user = {UserId = 321; Votes = votes}

    Assert.IsTrue(true) |> ignore

我刚刚将Assert语句更改为简单的语句,因为它目前一直在失败。使用ReSharper,当我运行测试时出现错误。经过调查,我的user声明中的投票类型被分配给投票列表似乎存在问题。我觉得奇怪的是,如果我将所有类型加载到FSI中,然后依次加载测试的每一行,它就可以正常工作。

任何人都对单元测试失败的原因有任何想法?

ReSharper Test Runner产生的错误是:

System.MissingMethodException : Method not found: 'Void User..ctor(Int32, Microsoft.FSharp.Collections.FSharpList`1<Vote>)'.

   at Voting Tests.Get Vote from given SuggestionId()

1 个答案:

答案 0 :(得分:0)

根据@Tomas Petricek和@John Palmer的建议,这与我的&#39; FSharp.Core.dll&#39;&#39;&#39;&#39;版本

我的UnitTest项目中此DLL的版本比我的Domain项目中的版本要旧得多。

我所做的一切就是进入NuGet包管理器并更新该特定包。再次运行我的测试,一切都是绿色和健康的。