为什么我的 chai rejectedWith 断言不起作用?
Why doesn't my chai rejectedWith assertion work?
我正在使用 Coffeescript、Mocha 和 chai,我有以下代码:
class Herp extends Error
message = "derpy!"
class Foo
@bar: ->
new Promise(() =>
throw Herp(message)
)
describe 'Berp', ->
it 'should herp a derp', ->
Foo.bar().should.eventually.be.rejectedWith(Herp(message))
我不明白为什么,当我运行这个测试时,它告诉我:
AssertionError: expected promise to be rejected with [Error: derpy!] but it was rejected with [Error: derpy!]
因为该消息看起来非常像是在说它希望它被拒绝,因为它被拒绝的确切内容。我在这里做错了什么?
❯ grep chai package.json
"chai": "^3.5.0",
"chai-as-promised": "^5.3.0",
❯ node --version
v6.4.0
❯ npm --version
3.10.3
Chai-as-promised 的 rejectedWith()
断言在某种程度上类似于 chai 的 throw()
; throw()
只是严格的 ===
比较。当然,您的错误是两个完全不同的对象,因此并不严格相等。
在这种情况下,我们使用 deep
比较。但是 chai 不支持 deep
throws 的相等性,所以我们不能简单地说:
Foo.bar().should.eventually.be.deep.rejectedWith(Herp(message));
当然 rejected
匹配器是可链接的,所以像下面这样的东西应该可以工作:
Foo.bar().should.eventually.be.rejected.and.deep.equal(Herp(message));
我正在使用 Coffeescript、Mocha 和 chai,我有以下代码:
class Herp extends Error
message = "derpy!"
class Foo
@bar: ->
new Promise(() =>
throw Herp(message)
)
describe 'Berp', ->
it 'should herp a derp', ->
Foo.bar().should.eventually.be.rejectedWith(Herp(message))
我不明白为什么,当我运行这个测试时,它告诉我:
AssertionError: expected promise to be rejected with [Error: derpy!] but it was rejected with [Error: derpy!]
因为该消息看起来非常像是在说它希望它被拒绝,因为它被拒绝的确切内容。我在这里做错了什么?
❯ grep chai package.json
"chai": "^3.5.0",
"chai-as-promised": "^5.3.0",
❯ node --version
v6.4.0
❯ npm --version
3.10.3
Chai-as-promised 的 rejectedWith()
断言在某种程度上类似于 chai 的 throw()
; throw()
只是严格的 ===
比较。当然,您的错误是两个完全不同的对象,因此并不严格相等。
在这种情况下,我们使用 deep
比较。但是 chai 不支持 deep
throws 的相等性,所以我们不能简单地说:
Foo.bar().should.eventually.be.deep.rejectedWith(Herp(message));
当然 rejected
匹配器是可链接的,所以像下面这样的东西应该可以工作:
Foo.bar().should.eventually.be.rejected.and.deep.equal(Herp(message));