Chai.js не указывает, какое утверждение не работает в тесте

Я использую mocha с chai.js для модульного тестирования CoffeeScript. У меня есть задача скомпилировать файлы кофе в тестовую папку и запустить PhantomJS для запуска тестов мокко.

Все работает нормально, однако chai.js указывает только, какой тест не прошел и каковы ожидаемые и фактические значения, он не указывает, какое утверждение не проходит в тестовом примере. Есть ли хороший способ напечатать утверждение или, по крайней мере, индекс ошибочного утверждения? Я также включил chai.Assertion.includeStack, однако он показывает только номер строки в файле JavaScript, что не очень полезно для тестов CoffeeScript.

FizzBuzzTest.coffee

fizz = new FizzBuzz()

describe "Print numbers from 1 to 100", ->
    it "First 10 digits from 1 to 5", ->
        result = fizz.do()
        arr = result.split(fizz.Delimiter)
        expect(arr[0]).to.equal("1")
        expect(arr[1]).to.equal("2")
        expect(arr[2]).to.equal(fizz.Fizz)
        expect(arr[3]).to.equal("3") # this assertion should fail
        expect(arr[4]).to.equal(fizz.Buzz)

Выполнение тестов

$ grunt test

Running "mocha:run" (mocha) task
Testing: Content/runner.html

  Print numbers from 1 to 100
    ✓ First 10 digits from 1 to 5 
    1) Last 10 digits from 95 to 100
    ✓ Print FizzBuzz instead of number which is divisible by both 3 and 5 
    ✓ Check number 
    ✓ Check Fizz 
    ✓ Check Buzz 
    ✓ Check FizzBuzz 
    ✓ Check if > 100 then null 
    ✓ Check if < 1 then null 

  8 passing (113ms)
  1 failing

  1) Print numbers from 1 to 100 Last 10 digits from 95 to 100:
     AssertionError: expected true to be false
      at file:///Users/milan/Sites/CoffeeTests/Content/js-libs/chai/chai.js:918
      at file:///Users/milan/Sites/CoffeeTests/Content/js-libs/chai/chai.js:1159
      at file:///Users/milan/Sites/CoffeeTests/Content/js-libs/chai/chai.js:3563

>> 1/9 tests failed (0.11s)
Warning: Task "mocha:run" failed. Use --force to continue.

Aborted due to warnings.

Вопрос. Есть ли хороший способ настроить chai.js, чтобы он более точно указывал, где произошла ошибка AssertionError?

Например: AssertionError: ожидается, что true будет ложным в строке expect(arr[3]).to.equal("3")

Спасибо.


person Milan Korsos    schedule 09.01.2014    source источник


Ответы (1)


Если никто не придумает более сложного решения, позволяющего chai.Assertion.includeStack хорошо работать с кодом CoffeeScript, вы всегда можете передавать сообщения некоторым функциям в интерфейсе expect:

it("bluh", function () {
    chai.expect(false).to.be.equal(true, "here");
});

Строка "here" — это сообщение, которое будет выведено вместе с сообщением об ошибке в случае сбоя утверждения. Взгляните на документацию, потому что не все функции принимают необязательное сообщение. Сначала я хотел использовать to.be.true выше, но метод true не принимает необязательное сообщение.

Интерфейс assert поддерживает дополнительные сообщения о большем количестве функций, чем интерфейс expect.

person Louis    schedule 10.01.2014
comment
Спасибо, это будет сделано. Было бы неплохо, если бы chai.js мог автоматически добавлять утверждение (здесь это просто «ложь»). - person Milan Korsos; 13.01.2014