我有以下记录:
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()
答案 0 :(得分:0)
根据@Tomas Petricek和@John Palmer的建议,这与我的&#39; FSharp.Core.dll&#39;&#39;&#39;&#39;版本
我的UnitTest项目中此DLL的版本比我的Domain项目中的版本要旧得多。
我所做的一切就是进入NuGet包管理器并更新该特定包。再次运行我的测试,一切都是绿色和健康的。