Я использую fs.readFile, чтобы прочитать еще один из моих файлов. Для экземпляров слов в моем массиве значений, которые также присутствуют в упомянутом другом файле, я бы добавил слово «true» (это то, что (data.include (value [i])) выводит) в мой массив testData. Затем я хочупроверить, что testData на самом деле содержит слово 'true'
Я очень новичок в изучении обещаний, обратных вызовов и асинхронных функций. Я пробовал учебник Обещания на https://jasmine.github.io/tutorials/async.
У меня естьпопытался использовать простой обратный вызов без тестирования здесь, это возвращает 'true'
fs = require('fs')
var testData = []
fs.readFile('iteration1.js', 'utf8', function(err, data){
if (err) throw err;
var value = ['table', 'fs.readFile', 'fs.writeFile', 'JSON.stringify'];
var i;
for (i = 0; i < value.length; i++) {
testData.push(data.includes(value[i]))
}
readTestData()
})
function readTestData() {
console.log(testData[0])
}
Это мой код, у меня возникли проблемы с
describe("fs methods", function () {
fs = require('fs')
var testData = []
it("The file should contain 'table'", function() {
var p1 = new Promise( (resolve, reject) => {
fs.readFile('src/iteration1.js', 'utf8', function(err, data){
if (err) throw err
var value = ['table', 'fs.readFile', 'fs.writeFile', 'JSON.stringify']
var i;
for (i = 0; i < value.length; i++) {
testData.push(data.includes(value[i]))
}
})
resolve()
})
p1.then( value => {
expect(testData[0]).toEqual('true')
})
})
})
"Ожидается, что undefined равно"true '. "
Я ожидаю, что вывод' true 'будет добавлен в массив testData, но кажется, что массив все еще пуст, когда я пытаюсь его протестировать. Я подумал бы, что мог бы избежать этого с использованиемобещаний.