2016-08-06 3 views
1

Я немного хакер (т. Е. Напишу какой-то код и проверив вручную функциональность), но теперь я хочу добавить немного больше структуры в свою кодировку, добавив некоторые модульные тесты и следуя подходу TDD. Но я пытаюсь построить единичный тест, который проверяет метод. Таким образом, любое понимание будет оценено по достоинству.Вызов метода тестирования

Я хочу, чтобы проверить мои readDirectories метод, но, как это асинхронный я придется использовать SetTimeout - но мой тест постоянно возвращается сообщение об ошибке:

test.js

test('The readDirectories method', (t) => { 
    const xyz = new abc('/foo/bar/', '/foo/baz/'); 
    const expected = ['/foo/bar/Download', '/foo/bar/HardDrive' ]; 

    xyz.readDirectories(xyz.source) 

    setTimeout(() => { 
    let actual = xyz.directories; 
    t.equal(actual, expected, 'should produce an array of subdirectories'); 
    }, 10); 

}); 

консоль

operator: equal 
expected: |- 
    [ '/foo/bar/Download', '/foo/bar/HardDrive' ] 
actual: |- 
    [ '/foo/bar/Download', '/foo/bar/HardDrive' ] 
at: Timeout.setTimeout (/home/user/Documents/app/tests/testModel.js:33:7) 

Посмотрев на пример на Tape, я считаю, что все правильно ... но потом я мог просто делать что-то глупое! Как мне пройти тест?

ответ

1

Выключилось испытание не выполнено из-за теста .equal. .equal проверяет, что мои результаты являются одновременно массивами, тогда как .deepEqual проверяет, что два массива имеют одинаковую структуру и вложенные значения.

С сайта Tape :

t.equal()

Assert that actual === expected with an optional description msg.

t.deepEqual()

Assert that actual and expected have the same structure and nested values using node's deepEqual() algorithm with strict comparisons (===) on leaf nodes and an optional description msg.