Почему мой тест на бросание мокко / чай не проходит?

У меня есть простой пакет javascript, который я пытаюсь протестировать. Я хочу проверить, не возникает ли ошибка, но когда мой тест запускается и выдается ошибка, тест помечается как неуспешный.

Вот код:

var should = require('chai').should(),
    expect = require('chai').expect();

describe('#myTestSuite', function () {

    it ('should check for TypeErrors', function () {

        // Pulled straight from the 'throw' section of
        // http://chaijs.com/api/bdd/
        var err = new ReferenceError('This is a bad function.');
        var fn = function () { throw err; }
        expect(fn).to.throw(ReferenceError);

    })

})

Что при запуске дает мне следующий результат:

kh:testthing khrob$ npm test

> [email protected] test /Users/khrob/testthing
> mocha



  #myTestSuite
    1) should check for TypeErrors


  0 passing (5ms)   1 failing

  1) #myTestSuite should check for TypeErrors:
     TypeError: object is not a function
      at Context.<anonymous> (/Users/khrob/testthing/test/index.js:10:3)
      at callFn (/Users/khrob/testthing/node_modules/mocha/lib/runnable.js:249:21)
      at Test.Runnable.run (/Users/khrob/testthing/node_modules/mocha/lib/runnable.js:242:7)
      at Runner.runTest (/Users/khrob/testthing/node_modules/mocha/lib/runner.js:373:10)
      at /Users/khrob/testthing/node_modules/mocha/lib/runner.js:451:12
      at next (/Users/khrob/testthing/node_modules/mocha/lib/runner.js:298:14)
      at /Users/khrob/testthing/node_modules/mocha/lib/runner.js:308:7
      at next (/Users/khrob/testthing/node_modules/mocha/lib/runner.js:246:23)
      at Object._onImmediate (/Users/khrob/testthing/node_modules/mocha/lib/runner.js:275:5)
      at processImmediate [as _immediateCallback] (timers.js:336:15)



npm ERR! Test failed.  See above for more details. 
npm ERR! not ok code 0

Я знаю, что здесь есть десятки ответов о том, что вы передаете в expect (), являясь функцией, а не результатом функции, и я пробовал каждую перестановку анонимного функционирования, о которой я могу думать, но я всегда получаю неудачный результат теста.

Я думаю, что это должно быть связано с моей конфигурацией, учитывая, что я в основном просто запускаю пример из документации, или мои ожидания относительно того, что является успешным или неудачным в тесте, не откалиброваны должным образом.

Какие-нибудь подсказки?


person Khrob    schedule 27.09.2014    source источник
comment
Если вы посмотрите на стек вызовов, ваш тест кажется неудачным из-за ошибки в строке 10: var err = new ReferenceError('This is a bad function.'); Похоже, ваша среда выполнения не распознает ReferenceError. Какой браузер / среду вы используете для запуска этого теста?   -  person Ates Goral    schedule 27.09.2014
comment
@AtesGoral: Неважно, в какой среде он работает. Вы обнаружили ошибку: ReferenceError не определен. Сделайте ответ. OP должен выяснить, почему он не определен.   -  person slebetman    schedule 27.09.2014
comment
Должна быть среда обычных узлов, но я покопаюсь в отсутствии ReferenceError. Спасибо за понимание   -  person Khrob    schedule 27.09.2014
comment
Для цепочки хлебных крошек console.log(err, typeof err, ReferenceError); в строке 11 приводит к: [ReferenceError: This is a bad function.] 'object' [Function: ReferenceError]. Следствие продолжается ...   -  person Khrob    schedule 27.09.2014
comment
Возможно, что среда не позволяет вам программно создать экземпляр ReferenceError, потому что это внутренний тип исключения.   -  person Ates Goral    schedule 27.09.2014


Ответы (2)


Это должно решить вашу проблему:

var expect = require('chai').expect;

Обратите внимание, что функция expect не вызывается.

person Steven Vachon    schedule 20.11.2014

Отследил!

Вверх

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

не давал мне ничего полезного. Изменив его на:

chai = require('chai'),

затем вызовите тест как

chai.expect(fn).to.throw(ReferenceError);

делает именно то, что я ожидал.

Спасибо за помощь.

person Khrob    schedule 27.09.2014
comment
Принятый ответ, очевидно, решает вашу проблему: ваши фигурные скобки после expect = require ('chai'). Expect были проблемой. - person Konstantin; 05.06.2017