Почему в строке ошибки есть косая черта? - PullRequest
0 голосов
/ 29 марта 2019

Вот мой стандартный вывод после того, как я провел свои тесты.

expect(received).toBe(expected) // Object.is equality

    Expected: "child 'path1' fails because ['path1' is not allowed to be empty]"
    Received: "child \"path1\" fails because [\"path1\" is not allowed to be empty]"

      39 |     } catch (error) {
      40 |       expect(error.name).toBe('ValidationError');
    > 41 |       expect(error.message).toBe("child 'path1' fails because ['path1' is not allowed to be empty]");
         |                             ^
      42 |     }
      43 |   });
      44 | });

      at Object.<anonymous> (src/__tests__/models/adChannel/googleadwords/AdGroupAd.spec.ts:41:29)

Как видите, значение Received имеет косую черту \. Не соответствует значению Expected.

Я думаю, может быть, строка сбежала? Я ожидаю, что строка не имеет \

1 Ответ

1 голос
/ 30 марта 2019

Краткий ответ

Измените expect на следующее:

expect(error.message).toBe('child "path1" fails because ["path1" is not allowed to be empty]');

... и оно будет работать.


Подробности

JavaScript позволяет определять строки, используя одинарные кавычки: 'a string' или двойные кавычки: "a string".

Из документа MDN :

В отличие от некоторых других языков, JavaScript не делает различий между строками в одинарных и двойных кавычках

... поэтому не имеет значения, какиеподход, который вы используете.


Одинарные кавычки прекрасно работают в строке, определенной двойными кавычками:

const singleQuotes = "has 'single quotes' in it";

... и то же самое верно для двойных кавычек в строке, определенной содинарные кавычки:

const doubleQuotes = 'has "double quotes" in it';

... но одиночные кавычки необходимо экранировать, если они находятся в строке, определенной одинарными кавычками:

const singleQuotes = 'has \'single quotes\' in it';

... иТо же самое верно для двойных кавычек в строке, определенной двойными кавычками:

const doubleQuotes = "has \"double quotes\" in it";

Вы видите escape-символы в выводе Jest, потому что Jest форматирует выходную строку с двойными кавычками вокруг нее, поэтому необходимо избегать двойных кавычек внутри нее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...