Я новичок в разработке, основанной на тестах, и пытаюсь разработать автоматизированный набор для тестирования для моего приложения.Как имитировать ошибку, возвращенную из fs.readFile для целей тестирования?
Я успешно написал тесты, которые проверяют данные, полученные от успешного вызова метода fs.readFile узла, но, как вы увидите на скриншоте ниже, когда я тестирую свое покрытие с помощью модуля istanbul, он правильно отображает, что у меня есть не проверен случай, когда ошибка возвращается из fs.readFile.
Как я могу это сделать? У меня есть догадка, что я должен макетировать файловую систему, которую я пробовал использовать модуль mock-fs, но не удалось. Путь к файлу жестко закодирован в функции, и я использую rewire для вызова неэкспортированной функции из кода моего приложения. Поэтому, когда я использую метод getter для rewire для доступа к функции getAppStatus, он использует реальный модуль fs, так как это то, что используется в файле async.js, где находится getAppStatus.
Вот код, который я тестирую:
// check whether the application is turned on
function getAppStatus(cb){
fs.readFile(directory + '../config/status.js','utf8', function(err, data){
if(err){
cb(err);
}
else{
status = data;
cb(null, status);
}
});
}
Вот тест, который я написал для случая, когда возвращаемые данные:
it('application should either be on or off', function(done) {
getAppStatus(function(err, data){
data.should.eq('on' || 'off')
done();
})
});
Я использую Chai как библиотеки утверждения и запуска тесты с моккой.
Любая помощь, позволяющая мне смоделировать ошибку, возвращаемую из fs.readFile, поэтому я могу написать тестовый пример для этого сценария.
удивительного, спасибо за помощь, я смог получить работу в течение нескольких минут с моими тестами. Я, наверняка, ударю еще пару блокпостов, поскольку я получу оставшуюся часть этого приложения, надеюсь, что я снова смогу снова задаться вопросом, когда я столкнусь с этими, конечно же, змеями. Спасибо еще раз за помощь! :) – Antoine