【问题标题】:How to test for an error thrown in the constructor?如何测试构造函数中抛出的错误?
【发布时间】:2020-04-18 14:03:00
【问题描述】:

我正在尝试使用我的 chai 测试来捕获构造函数中抛出的错误:

'use strict'

const chai = require('chai')
const expect = chai.expect

describe('A rover must be placed inside the platform', function() {
  it('A Rover at position -1 2 S should throw an error', function() {
    expect(new Rover(-1, 2, 'N')).should.throw(Error ('Rover has landed outside of the platform'));
  })
})


class Rover {
  constructor(x, y, heading) {
    this.x = x;
    this.y = y;
    this.heading = heading;

    if (this.x > 5 || this.x < 0 || this.y > 5 || this.y < 0) {
      throw Error(`Rover has landed outside of the platform`);
    }
  }
}

构造函数正确抛出错误,但测试没有捕获它:

A rover must be placed inside the platform
    1) A Rover at position -1 2 S should throw an error


  1 failing

  1) A rover must be placed inside the platform
       A Rover at position -1 2 S should throw an error:
     Error: Rover has landed outside of the platform

是否甚至可以用 chai 捕获构造函数中抛出的错误?

【问题讨论】:

标签: javascript chai


【解决方案1】:

您可以将对象创建包装在函数调用中,然后期望抛出异常。

expect(function () {
    new Rover(-1, 2, 'N');
}).to.throw('Rover has landed outside of the platform');

请参阅related 答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 2012-08-23
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多