Строка не печатается с двойными кавычками в javscript?

#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 . Вот почему тесты терпят неудачу.