- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在测试 node.js 程序中的一个函数,它应该将一些数据保存到 mongo 数据库中。我正在使用 mocha、chai 和 should。
在模式中,我定义了要保存的数据
data: [{type: Number, min: 0}]
测试将数组[1,2,3,4,5,6]
保存到数据库中,然后再次查找
,并比较找到的内容使用保存的数组。测试是
result.data.should.eql([1,2,3,4,5,6]);
测试结果为
Uncaught AssertionError: expected [1,2,3,4,5,6]
to deeply equal [ 1, 2, 3, 4, 5, 6 ]
根据 this chai.js example ,以这种方式比较数组应该可以正常工作。
当我使用 result.data.should.deep.include.members([1,2,3,4,5,6]);
测试结果时,测试按预期通过.
谁能向我解释为什么这不起作用?
最佳答案
Mongoose 用它自己的很多方法来装饰数组。当您执行 console.log(result.data)
时,您不会看到这些,但是 deep-eql (Chai 用来做深度相等的库)在做比较时会考虑它们。这就是当您使用 .eql()
时测试失败的原因:您正在将一个特殊的 Mongoose 数组与一个普通的普通数组进行比较。
如果你这样做了
result.data.toJSON().should.eql([1,2,3,4,5,6]);
您的测试会如您所愿地通过。
.members()
断言通过 different code path ,这就是它恰好起作用的原因。
顺便说一句,适用于您的示例并不完全符合您的要求,它是一个超集测试。你真正想要的是:
result.data.should.have.members([1,2,3,4,5,6]);
关于javascript - chai eql 将相等数组报告为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27034942/
Ruby里面有4种比较方法,equal?, eql?, ==, ===,而且在不同的类里面表现的很不一样。在使用的时候也特别容易搞糊涂。 这篇博文将演示一些代码来讲解各个方法。 == - 类意义上
我正在测试 node.js 程序中的一个函数,它应该将一些数据保存到 mongo 数据库中。我正在使用 mocha、chai 和 should。 在模式中,我定义了要保存的数据 data: [{typ
当我使用 .match 和 .eql 时?对于字符串比较,他们给出了不同的结果 text_from_page = "wrong length (should be 64 characters)" er
在this presentation演讲者创建了一个值(value)类。 在实现它时,他重写了#eql?,并说在Java开发中,惯用语是每当你重写#eql?时,你必须重写#散列。 class Weig
在 RSpec 中,使用 should == ... 和 should eql(...) 有什么区别?我注意到 RSpec 文档总是使用 eql,但是 == 更少打字而且更容易阅读。我错过了什么? 最
我在 String 类的文档中读到 eql? 是一个严格的相等运算符,没有类型转换,而 == 是一个试图转换的相等运算符其次,它的参数是一个字符串,而且,这个方法的 C 源代码确认: eql?源代码:
我试图了解这四种方法之间的区别。我知道默认情况下 == 调用方法 equal? 当两个操作数引用完全相同的对象时返回 true。 === 默认也会调用 == 调用 equal?...好吧,如果这三个方
你可以做什么的例子。 (defmethod some-fn ((num real)) (print "an integer")) (defmethod some-fn ((num real))
每个人都知道,Nest Elasticsearch对要查找的东西进行澄清的查询并不容易且很无聊。我也为这个问题感到困惑。结果,我无法在查询中使用“不为空”和null。 var list = cl
前几天了解了defmethod的eql子句参数规范语法。 The defmethod hyperspec清楚地表明 eql 的存在token 是语法的基本部分。例如,当我在 CLISP 中尝试以下操作
我在 Ruby 中看到了很多平等的概念。 == eql? === equal? 而且它们都有不同的语义。对我来说应该只有两个,一个是引用相等,另一个是值相等。我不明白为什么 Ruby 需要 eql?
我有一个获取 ActiveRecord 范围的 Controller 索引测试。测试目前看起来像这样(包括一些内联调试的东西): describe "GET index" do it "assig
我想知道,根据#eql,当我将相同的键放入数组(这是哈希的键)时,为什么这个 ruby 哈希的计算结果为 nil?并检查哈希是否相等。 some_arr = [1] => [1] my_hash
Common Lisp 中是否有等于任何原子的通配符? 也就是说,有没有这样的通配符 (eql wildcard any-atom) 返回真值? 最佳答案 函数atom如果它的参数是一个原子,则返回
在编写带有大量实例变量的大类时,写==、eql?和哈希方法是一个很大的麻烦。有没有办法制作一个“模板类”来自动化这个过程?或者用任何其他方式。 例子: class Template def =
在 rspec 测试中使用 eq 和 eql 有什么区别?有区别吗: it "adds the correct information to entries" do # book = Addres
我正在处理一个 API 项目并使用 Postman 来测试 API。我写了几个测试用例来检查 null 如下, //user id is present pm.test("user id is pre
我有一个包含“搜索字段”和“搜索按钮”的页面以及一个包含 5 列的表格。我想使用 testcafe + javascript 进行自动化测试,如下所示: 1:输入“搜索字段”——完成 2:点击“搜索按
我有一个关于用于单元测试的 Chai 库的问题。我注意到一条声明说: equal : 断言目标严格 (===) 等于给定值。 eql : 断言目标深度等于值。 我对strictly 和deeply 之
我使用的是 Ruby 2.2.1,遇到以下情况: a = ... # some object h = ... # some hash p h.size #=> 1 p h.keys.first.has
我是一名优秀的程序员,十分优秀!