Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';我的柴不是拒绝了我的工作吗?_Javascript_Testing_Mocha.js_Chai - Fatal编程技术网

Javascript 为什么';我的柴不是拒绝了我的工作吗?

Javascript 为什么';我的柴不是拒绝了我的工作吗?,javascript,testing,mocha.js,chai,Javascript,Testing,Mocha.js,Chai,我正在使用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.

我正在使用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
equality,因此我们不能简单地说:

 Foo.bar().should.eventually.be.deep.rejectedWith(Herp(message));
当然,
rejected
matcher是可链接的,因此类似于以下的东西应该可以工作:

Foo.bar().should.eventually.be.rejected.and.deep.equal(Herp(message));
另请参见:和,了解其他可能的解决方案和问题跟踪