【问题标题】:Testing value of nested property in chai-as-promised and mochachai-as-promised 和 mocha 中嵌套属性的测试值
【发布时间】:2016-10-05 20:45:08
【问题描述】:

我正在尝试使用 chai-as-promised 库测试一个返回承诺的函数。我承诺的结果是一个具有嵌套属性的对象。是否可以测试深层嵌套属性的值。

例如

function myFunc() {
  return new Promise((resolve, reject) => {
    const data = {
      thing: {
        foo: 'bar',
        baz: 'lah'
      }
    }
    resolve(data)
  })
}

如何在不检查整个对象的情况下测试foo 属性是否等于“bar”?我尝试过这样的事情:

expect(myFunc()).to.eventually.have.property('thing.foo', 'bar')

但没有运气!

【问题讨论】:

    标签: javascript promise mocha.js chai


    【解决方案1】:

    使用深度属性查找应该可以工作。只需在property 之前添加deep 关键字即可。

    expect(myFunc()).to.eventually.have.deep.property('thing.foo', 'bar')
    

    如果您更喜欢冗长的方式,您还应该能够执行以下操作:

    expect(myFunc())
       .to.eventually.have.property('thing')
       .that.has.property('foo')
       .that.is.equal.to('bar');
    

    【讨论】:

    • 如果你改用“assert”怎么办?
    • 我认为这是错误的——不应该是.to.eventually.have.nested.property吗?这可以查看对象中的任何位置(包括根以下)是否具有键 thing.foo 和值 bar,但 .nested.property 会检查 returnValue.thing.foo === 'bar' 是否。
    • 很久没用柴了。我不能肯定,你测试过吗?
    • @QuentinRoy 这就是我刚刚遇到的问题;据我所知,这在过去的某个时候发生了变化。有几次.deep 被称为正确,但它们都相当老了。
    猜你喜欢
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    相关资源
    最近更新 更多