FsUnit“should equal”在“Some []”上失败

2023-12-02

当我使用 NUnit 2.6.3 运行 FsUnit 测试时,

let f xs = Some (List.map ((+) 2) xs)

[<Test>]
let test() =
  f []
  |> should equal (Some [])

I get:

Result Message: 
Expected: <Some([])>
  But was:  <Some([])>
Result StackTrace:  
at FsUnit.TopLevelOperators.should[a,a](FSharpFunc`2 f, a x, Object y)

即使消息中的预期和实际相同,测试也会失败。发生了什么?


原因是 FsUnit 在幕后使用非类型化机制,因此Expected被推断为object由类型检查器(参见Object y堆栈跟踪中的一部分)。

解决方法是为泛型值添加类型注释,即

[<Test>]
let test() =
  f []
  |> should equal (Some ([]: int list))

有几个人被这个咬过,例如类型提供者中奇怪的 None 行为.

一旦它们不再是类型安全的,流畅的断言之美对我来说就毫无意义了。我建议创建一个类型安全的替代方案:

let shouldEqual (x: 'a) (y: 'a) = 
    Assert.AreEqual(x, y, sprintf "Expected: %A\nActual: %A" x y)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FsUnit“should equal”在“Some []”上失败 的相关文章

  • 起订量工作单元

    我是单元测试的新手 我想为我的搜索功能创建一个测试 我的服务层看起来像 public class EmployeeService BaseService IEmployeeService public EmployeeService IUn
  • 需要帮助理解这段代码

    我正在尝试学习单元测试 我正在尝试对我在 asp net mvc 1 0 中制作的一些会员资格内容进行单元测试 我一直在关注一本关于 MVC 的书 我对一些东西感到困惑 希望有人能为我解答 我的框架使用 Nunit 和 Moq 问题一 pu
  • 如何使用 WebSharper 在服务器上生成 Google Visualizations 数据

    我的目标是能够在服务器上为 Google Visualizations 生成数据 然后将其作为 java 脚本传递给客户端 以便可以将其呈现为折线图 我下面的示例可以正确编译 但在浏览器中呈现时会产生错误 在服务器上构建 DataCommo
  • 使用 System.Text.Json 序列化记录成员

    我在记录中使用自我引用成员 如下所示 type Payload Id Guid member x DerivedProperty Derived Property using id x Id NewtonSoft Json会序列化这个 但是
  • 您可以像将数据传递给测试用例一样将数据传递给测试装置吗?

    您可以像将数据传递给测试用例一样将数据传递给 NUnit3 测试装置吗 这样做有意义吗 根据参数运行套件 夹具类 绝对地 如果你需要传入的参数数量有限 你可以将它们放在普通的参数中 TestFixture 属性 它们将被传递给 TestFi
  • 在构建过程中引用自身内部的记录

    我正在尝试创建一条记录 该记录在同一构造函数中使用先前定义的字段之一来计算另一个字段的值 例如 myRecordType Foo int Bar int myRecord Foo 5 Bar Array init Foo fun i gt
  • 在 Visual Studio 2012 Express 上通过 Nuget 的 NUnit.Runners 不起作用

    我正在尝试使用 NuGet 管理器在 Visual Studio 2012 Express 中设置简单的 NUnit 项目 从 PROJECT gt Manage NuGet Packages 我安装了 NUnit 框架 并想要添加 NUn
  • 如何在 F# 中打印整个列表?

    当我使用 Console WriteLine 打印列表时 它默认仅显示前三个元素 如何让它打印列表的全部内容 您可以将 A 格式说明符与 printf 一起使用来获得 美化的 列表打印输出 但与对象上的 Console WriteLine
  • F#:Microsoft.FSharp.Data.TypeProviders 是否需要配置文件 47?

    这是后续我昨天的帖子 https stackoverflow com questions 30399773 f fsc error fs2024 static linking may not use assembly that target
  • 专家 f# 脚本编译奇怪

    第 209 210 页有一个扩展示例 见下文 我使用的是 F 4 5 总之 我不明白的是 如果我单独键入每个语句 则会有一个声明引发错误 如果我立即提交整个脚本 以及引发错误的声明之后的函数 则一切正常 那么 当我批量提交所有语句时 交互中
  • F# 内联如何工作?

    对于 F 我的理解是您可以使用 inline 关键字在调用站点执行类型专门化 那是 val inline a gt b gt c when a or b static member a b gt c 约束条件是 a or b必须有一个静态成
  • Net Core ILogger 值不能为空

    我收到记录器值不能为空 我正在尝试解决这个问题 也许是通过依赖注入来解决的 在单元测试和程序中的其他地方都会收到错误 我是否正确进行依赖注入 Expected
  • 在 C# 中使用 Nsubstitute 模拟具有固定参数的可选参数的函数返回 null

    我一直在尝试模拟一个包含带有固定参数的可选参数的函数 但每次我得到一个空值 这是我在接口中定义的函数 我想模拟它 List GetEntitiesByIDs List
  • 使用列表匹配绑定值(没有编译器警告)

    假设我有一个需要一些时间的函数int参数 但在其中我将使用float32 我不想使用float32 i无处不在的功能 相反 我想这样做 let x float32 x let y float32 y let w float32 w let
  • 如何在 F# 测量单位上定义扩展成员?

    暂且不说我们是否应该对像角度这样的无单位概念使用测量单位 假设我已经定义了degree and radianF 中的单位 type
  • 在构建服务器上安装 F# 4.1 SDK

    我已在 PC 上安装了支持 F 的 Visual Studio 2017 并且 MSBuild 目标位于C Program Files x86 Microsoft Visual Studio 2017 Enterprise MSBuild
  • 如何在 F# 中组合 Result<> 列表?

    用这个代码 let a 3 4 5 6 7 let check x if x 2 0 then Ok x else Error x let b a gt List map check 我如何将 B 总结为 如果一切OK 则Ok 如果有任何错
  • Nunit 测试给出结果 OneTimeSetUp: 未找到合适的构造函数

    我有一个问题 NUnit 告诉我 没有找到合适的构造函数 这是什么原因造成的 我还收到另一条消息 异常没有堆栈跟踪 这两条消息只是一遍又一遍地重复 这是我的代码 TestFixture public class SecurityServic
  • 如何在 F# 中执行 Seq.takeWhile + 一项

    我想编写一个使用谓词过滤序列的函数 但结果还应该包括谓词返回 false 的第一个项目 如果 F 中有一个break关键字 逻辑将是这样的 let myFilter predicate s seq for item in s do yiel
  • 如何向 F# 项目添加第三方 dll 引用?

    我正在向我的 F 项目添加第三方 dll 引用 我在引用中添加了 dll 当我使用它时 即突出显示代码并执行 Alt Ent 我收到错误 命名空间或模块 AZROLESLib 未定义 我是不是错过了什么 简而言之 你必须使用 r path

随机推荐

  • Python Regex - 拒绝带有换行符的字符串

    我想将完整的字符串与特定的模式匹配 比方说 word aaaa test re match r aaaa word this returns True 但是 如果该单词后跟换行符 word aaaa n test re match r aa
  • 如何使用 API v3 列出 YouTube 频道的所有上传视频(URL)?

    本文展示了如何在版本 2 中从特定频道获取所有上传的视频 但我不知道如何在版本 3 中做到这一点 是否可以 大多数版本 3 的文章只讨论搜索 Here 您将找到所有 Data API v3 参考 只需几个步骤即可 1 You list上传完
  • 如何使用任意语言环境比较“basic_string”

    我重新发布了今天早些时候提交的问题 但现在我引用了一个具体的例子来回应我收到的反馈 原问题可以找到here 请注意 这不是家庭作业 我只是想确定 C 是否无法执行 有效的 不区分大小写比较一个basic string对象也包含任意任意的因素
  • 此正则表达式中单引号的用途是什么?

    我继承了一些带有以下正则表达式的 C 代码 Regex a zA Z s 1 40 除了单引号的作用之外 我理解这个字符串 我到处搜索但似乎找不到解释 有任何想法吗 据我所知 这个表达是多余的 它匹配a z or A Z 或者 字符 或之间
  • gethostbyname() 在 iOS6 中失败

    我使用 gethostbyname 来获取设备 IP 在iOS5中 它运行良好 但在iOS6中 gethostbyname 返回的主机值为NULL 下面是我的代码 用于获取设备当前的本地IP retun the host name NSSt
  • 如何通过 HTML 下拉或选择元素实现自动完成功能?

    嗨 我正在尝试创建auto completion的功能下拉或选择html 表单元素 我需要一个功能 比如用户启动后typing on a drop down select元素根据它的match able元素将以以下形式出现选定的元素特定下拉
  • 如何在两个不同选项卡的内容脚本之间传输数据?

    在我的扩展中 我需要将一些数据从一个选项卡的内容脚本传输到另一个选项卡的内容脚本 如果我知道该选项卡对象的名称或 url 的一部分 如何使用 chrome tabs 选择某个选项卡 两个选项卡的脚本如何通信 UPDATE 显然我在 chro
  • 如何使用 stat_smooth 在二因子图上显示一条线?

    我有一个这样的 data frame df lt data frame a runif 1000 b runif 1000 c runif 1000 d sample c yes no 1000 replace TRUE 我进行了逻辑回归
  • 迭代 Boost fusion::vector

    我正在尝试使用以下方法迭代 boost fusion 向量 typedef typename fusion result of begin
  • 如何以编程方式将录制的音频文件保存在另一个文件夹中?

    我试图将录制的音频文件保存在我希望的文件夹中 而不是默认文件夹中 但不知何故我没能做到 my code Intent recordIntent new Intent MediaStore Audio Media RECORD SOUND A
  • 无法将透明 PNG 放在普通图像上 Python Tkinter

    所以我有 2 张图像 其中 1 张图像应该是背景 另外 1 张只是角色图像 我可以将一张图像放在另一张图像上 但该图像具有白色边框 即使它是 PNG 文件 This is how it looks like This is how I wa
  • Ruby 中的闭包和模块

    我有点困惑为什么这段代码不起作用 def create type Module new do def foo type end end end 打电话时foo在返回的模块上 type没有定义 我应该使用 Proc 或 lambda 来捕获
  • 在 bash 中使用正则表达式删除 XML 注释

    我想使用正则表达式 awk sed grep 删除 bash 中的 XML 注释 我看过有关此问题的其他问题 但他们遗漏了一些东西 这是我的 xml 代码 table table
  • mPDF 错误:某些数据已输出到浏览器

    我正在使用 mpdf 将 html 转换并显示为 PDF 当我在本地电脑 服务器上运行它时 我看到了 pdf 但是当我在我的站点服务器上运行它时 我收到此错误 mPDF错误 某些数据已输出到浏览器 无法发送PDF文件 url http SI
  • Rails:使用 Font Awesome

    我的网页设计师为我提供了更新的字体 图标 这些字体 图标已添加到 font Awesome 他将其放置在本地字体文件夹中 我还获得了一个 font awesome css 文件 我直接将 fonts 文件夹复制到我的 asset 中 并将
  • jquery Draggable & Droppable 获取源容器(draggable 来自)

    我为不同的答案做了这个 jsfiddle 我想知道如何获得可放置的源容器 http jsfiddle net d7wsz 8 jquery 是 Table1 tr not disabled Table2 tr not disabled Ta
  • 在 R、Rmd、knitr、bookdown 中打印 UTF-8 字符

    更新 2018 年 4 月 在不同的设置和计算机下 问题仍然存在 我相信它与所有 UNICODE UTF 8 字符有关 https www joelonsoftware com 2003 10 08 the absolute minimum
  • 获取adb版本失败; Ubuntu 11.10 中错误 = 13

    我向 eclipse 添加了 32 位 android adk Classic Indigo 版本 3 7 0 Ubuntu 11 10 中的构建 ID I20110613 1736 我使用 32 位 Ubuntu 当我启动 Eclipse
  • mod_rewrite 重定向不存在的 URL

    我有一个旧网站 我已经接管了 新用户基本上会获得为他们创建的自定义页面 这是以一种不太奇妙的方式完成的 目前 它实际上生成一个以创建的 slug URL 命名的文件 并将其符号链接到名为 main 的文件夹 显然我想改变这一点 我的计划只是
  • FsUnit“should equal”在“Some []”上失败

    当我使用 NUnit 2 6 3 运行 FsUnit 测试时 let f xs Some List map 2 xs