#javascript #string
#javascript #строка
Вопрос:
Я создаю todo
программу в node. Он выводит статус оставшихся и завершенных задач, используя следующий код:-
'Report':function(){
var remaining=fs.readFileSync(source,'utf-8').split('n').length-1;
var completed=fs.readFileSync(dest,'utf-8').split('n').length-1;
var day=ReturnDate();
var text=day ` Pending : ` remaining.toString() ` Completed : ` completed.toString();
console.log(text);
}
ReturnDate
возвращает форматированную дату.
const ReturnDate=function(){
const dateObj=new Date();
const month=String(dateObj.getMonth()).padStart(2,'0');
const day = String(dateObj.getDate()).padStart(2, '0');
const year = dateObj.getFullYear();
var res=year "-" month "-" day;
return res;
}
Когда я запускаю его в консоли, он генерирует:-
2020-11-21 Pending : 1 Completed : 2
Но когда я запускаю тесты, происходит сбой,
● report pending amp; completed todos
expect(received).toEqual(expected) // deep equality
Expected: StringContaining "2020-12-21 Pending : 1 Completed : 2"
Received: "2020-11-21 Pending : 1 Completed : 2
"
216 | let received = execSync(todoTxtCli("report")).toString("utf8");
217 |
> 218 | expect(received).toEqual(expect.stringContaining(expected));
| ^
219 | });
220 |
at Object.<anonymous> (todo.test.js:218:20)
Я не знаю, почему вторая двойная кавычка переходит на следующую строку, хотя я не использую какую-либо новую строку.
Ответ №1:
Вторая двойная кавычка не проблема, эти две строки не равны.
Первая имеет дату 2020-12-21
, но полученная строка имеет дату 2020-11-21
. Вот почему тесты терпят неудачу.