Mocha / Chai:测试精确的投掷错误结果

时间:2017-06-13 08:18:33

标签: javascript unit-testing meteor mocha chai

有一个简单的方法会引发错误:

methods.js

insertItem = new ValidatedMethod({
    name    : 'article.insert.item',
    validate: new SimpleSchema({
        parent: { type: SimpleSchema.RegEx.Id }
        value : { type: String }
    }).validator(),

    run({ parent, value}) {
        var isDisabled = true
        if (isDisabled)
            throw new Meteor.Error('example-error', 'There is no reason for this error :-)')
    }
})

现在我想对此错误进行 mocha 测试。所以我提出了这个,这是有效的:

server.test.js

it('should not add item, if element is disabled', (done) => {
    const value = 'just a string'

    function expectedError() {
        insertItem.call(
            {
                parent: '12345',
                value
            }
        )
    }

    expect(expectedError).to.throw
    done()
})

在此之前一切正常。

问题

但我想测试确切的错误信息。

我已经尝试了

expect(expectedError).to.throw(new Meteor.Error('example-error', 'There is no reason for this error :-)'))

但它给了我一个失败的测试:

Error: expected [Function: expectedError] to throw 'Error: There is no reason for this error :-) [example-error]'

2 个答案:

答案 0 :(得分:0)

我认为文档对此有点误导/混淆 - 只需从polService移除new运算符,它就会与抛出的错误相匹配:

expect

答案 1 :(得分:0)

我从this post中发现,我需要这样写:

expect(expectedError).to.throw(Meteor.Error(), 'example-error', 'This is an error');

请注意,错误消息在Error()之后,