相关疑难解决方法(0)

测试Mocha中引发的错误

我希望能找到一些帮助解决这个问题.我正在尝试为我正在编写的应用程序编写测试.我已将问题提炼到以下示例代码中.我想测试一个错误被抛出.我使用Testacular作为测试运行器,mocha作为框架,chai作为断言库.测试运行,但测试失败,因为抛出了错误!任何帮助是极大的赞赏!

function iThrowError() {
    throw new Error("Error thrown");
}

var assert = chai.assert,
    expect = chai.expect;
describe('The app', function() {
    describe('this feature', function() {
        it("is a function", function(){
            assert.throw(iThrowError(), Error, "Error thrown");
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

javascript testing mocha.js chai

73
推荐指数
3
解决办法
8万
查看次数

节点的断言是否完全断开?

鉴于此代码:

var assert = require('assert');

function boom(){
    throw new Error('BOOM');
}

assert.throws( boom(), Error );
Run Code Online (Sandbox Code Playgroud)

我得到这个输出,节点0.4.9:

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: BOOM
    at boom ([EDITED]/assert.throws.test.js:4:9)
    at Object.<anonymous> ([EDITED]/assert.throws.test.js:7:17)
    at Module._compile (module.js:402:26)
    at Object..js (module.js:408:10)
    at Module.load (module.js:334:31)
    at Function._load (module.js:293:12)
    at Array.<anonymous> (module.js:421:10)
    at EventEmitter._tickCallback (node.js:126:26)
Run Code Online (Sandbox Code Playgroud)

对我来说,这意味着发生了未捕获的异常,而不是报告的异常.查看文档,我注意到示例看起来更像是这样的:

var assert = require('assert');

function boom(){
    throw new Error('BOOM');
}

assert.throws( boom, Error );
Run Code Online (Sandbox Code Playgroud)

但是,如果给出一定的输入,你如何测试它是否会抛出异常?例如:

var assert = require('assert');

function boom(blowup){
    if(blowup)
        throw new …
Run Code Online (Sandbox Code Playgroud)

unit-testing node.js

33
推荐指数
3
解决办法
2万
查看次数

使用Mocha/Chai测试JS异常

试图测试一些抛出Mocha/Chai异常的代码,但没有运气,这是我试图测试的简单代码:

class window.VisualizationsManager

  test: ->
    throw(new Error 'Oh no')
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

describe 'VisualizationsManager', ->

  it 'does not permit the construction of new instances', ->

    manager = new window.VisualizationsManager

    chai.expect(manager.test()).to.throw('Oh no')
Run Code Online (Sandbox Code Playgroud)

但是,当我运行规范时,测试失败并抛出异常.

Failure/Error: Oh no
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

javascript mocha.js coffeescript chai

25
推荐指数
2
解决办法
2万
查看次数

柴:根据参数预期错误与否

我一直在尝试做一个函数的文本来处理错误,如果它是一个有效的错误,它会被抛出,但如果不是,那么什么都不会抛出.问题是我似乎无法在使用时设置参数:

expect(handleError).to.throw(Error);
Run Code Online (Sandbox Code Playgroud)

理想的是使用:

expect(handleError(validError)).to.throw(Error);
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个功能?

功能代码:

function handleError (err) {
    if (err !== true) {
        switch (err) {
            case xxx:
            ...
        }
        throw "stop js execution";
    else {}
}
Run Code Online (Sandbox Code Playgroud)

和测试代码(不按预期工作):

it("should stop Javascript execution if the parameter isnt \"true\"", function() {
    expect(handleError).to.be.a("function");
    expect(handleError(true)).to.not.throw(Error);
    expect(handleError("anything else")).to.throw(Error);
});
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js chai

21
推荐指数
2
解决办法
8017
查看次数

在柴中测试错误类型

我目前正在测试我的应用程序chai.我想测试一个我的方法抛出的错误.为此,我写了这个测试:

expect ( place.updateAddress ( [] ) ).to.throw ( TypeError );
Run Code Online (Sandbox Code Playgroud)

这是方法:

Place.prototype.updateAddress = function ( address ) {
    var self = this;

    if ( ! utils.type.isObject ( address ) ) {
        throw new TypeError (
            'Expect the parameter to be a JSON Object, ' +
            $.type ( address ) + ' provided.'
        );
    }

    for ( var key in address ) if ( address.hasOwnProperty ( key ) ) {
        self.attributes.address[key] = address[key];
    }

    return self;
};
Run Code Online (Sandbox Code Playgroud)

问题是, …

javascript testing unit-testing chai

7
推荐指数
1
解决办法
3673
查看次数

节点断言:测试错误消息

使用节点的断言模块如何测试错误消息?

throw new Error('Email is required!');
Run Code Online (Sandbox Code Playgroud)

我使用assert.throws来检查是否抛出错误:

assert.throws(myFunction, Error);
Run Code Online (Sandbox Code Playgroud)

但这并不提供检查消息的能力。

assert mocha.js node.js node-assert

5
推荐指数
1
解决办法
1517
查看次数

断言使用new执行构造函数抛出错误

使用Chai和Mocha,我会用什么语法断言在使用new关键字执行构造函数时会抛出错误?我使用以下内容时出错:

assert.throw(new SomeFunction, Error);

返回:

AssertionError: expected { Object () } to be a function

javascript mocha.js chai

4
推荐指数
1
解决办法
1963
查看次数

如何使用Chai.should测试抛出的错误

我正在使用Chai.should,我需要测试一个异常,但无论我尝试什么,我都无法让它工作.该文档只能说明expect:(

我有这个Singleton类,如果你尝试,会抛出一个错误

new MySingleton();
Run Code Online (Sandbox Code Playgroud)

这是抛出错误的构造函数

constructor(enforcer) {
    if(enforcer !== singletonEnforcer) throw 'Cannot construct singleton';
    ...
Run Code Online (Sandbox Code Playgroud)

现在我想检查一下这种情况

 it('should not be possible to create a new instance', () => {
    (function () {
        new MySingleton();
    })().should.throw(Error, /Cannot construct singleton/);
 });
Run Code Online (Sandbox Code Playgroud)

要么

new MySingleton().should.throw(Error('Cannot construct singleton');
Run Code Online (Sandbox Code Playgroud)

这些都不起作用.这是怎么做到的?有什么建议 ?

javascript unit-testing chai ecmascript-6

4
推荐指数
2
解决办法
7133
查看次数

使用 Chai expect throw 无法捕获承诺拒绝

我已经搜索了如何解决这个问题,但我测试的所有解决方案都不适用于我的情况。

我有一个返回承诺的函数,我正在尝试使用 Mocha 和 Chai 进行测试。

我正在模糊参数,所以函数总是返回:

拒绝('拒绝原因')

这是我尝试运行的测试:

describe('fuzzing tokenization with 1000 invalid values', () => {

   it('should throw an error - invalid value', async () => {

      for(var i=0; i <= 1000; i++){

          var req = {
              body: {
                  value: fuzzer.mutate.string('1000000000000000')
              },
              user: {
                  displayName: user
              }
          };

          expect(await tokenizer.tokenize(req)).to.throw(Error);

      }

   });

});
Run Code Online (Sandbox Code Playgroud)

测试失败:

错误:字符串“无效值”。被抛出,抛出一个错误:)

我测试了几个变化,比如将期望包装成一个函数

expect(async () => { ...}).to.throw(Error);

和其他我发现谷歌搜索。但我无法让它发挥作用。

我错过了什么?

mocha.js node.js chai

3
推荐指数
1
解决办法
6659
查看次数

Chai - 期望函数抛出错误

我对Chai很新,所以我仍然要掌握一切.

我编写的函数将检查API响应并返回正确的消息或抛出错误.

networkDataHelper.prototype.formatPostcodeStatus = function(postcodeStatus) {

if (postcodeStatus.hasOwnProperty("errorCode")) {
    //errorCode should always be "INVALID_POSTCODE"
    throw Error(postcodeStatus.errorCode);
}

if (postcodeStatus.hasOwnProperty("lori")) {
    return "There appears to be a problem in your area. " + postcodeStatus.lori.message;
}

else if (postcodeStatus.maintenance !== null) {
    return postcodeStatus.maintenance.bodytext;
}

else {
    return "There are currently no outages in your area.";
}
};
Run Code Online (Sandbox Code Playgroud)

我已经设法为消息传递编写测试,但是,我正在努力进行错误测试.这是我迄今为止所写的内容:

var networkDataHelper = require('../network_data_helper.js');

describe('networkDataHelper', function() {
var subject = new networkDataHelper();
var postcode;

    describe('#formatPostcodeStatus', function() {
        var status = {
            "locationValue":"SL66DY",
            "error":false, …
Run Code Online (Sandbox Code Playgroud)

javascript chai

2
推荐指数
1
解决办法
4447
查看次数