Могу ли я использовать функцию «allow.stringConisting ()» внутри блока Jest `.toHaveBeenCalledWith ()`? - PullRequest
2 голосов
/ 30 апреля 2020

Можно ли использовать expect.stringContaining() внутри блока Jest .toHaveBeenCalledWith()?

В настоящее время я использую:

expect(createChatRoomMock).toHaveBeenCalledWith({
  creatorId: expect.stringContaining("user_"),
  chatRoomUuid: expect.stringContaining("chatRoom_"),
});

Но это не с:


    - Expected
    + Received


    Object {
  -   "chatRoomUuid": StringContaining "chatRoom_",
  -   "creatorId": StringContaining "user_",
  +   "chatRoomUuid": "chatRoom_sZ9nj4hC46e4bGz4PjYzpC",
  +   "creatorId": "user_nCQsasvYirUwwoEr3j8HsC",
    },

Это странно, как вы можете видеть из ошибки, полученные строки соответствуют ожидаемым

Я также пытался:

expect(createChatRoomMock).toHaveBeenCalledWith({
  creatorId: expect.stringMatching(/user_.*/),
  chatRoomUuid: expect.stringMatching(/chatRoom_.*/),
});

С такими же результатами, как показано выше.

Как я могу использовать expect.stringContaining() внутри блока Jest .toHaveBeenCalledWith()?

Ответы [ 2 ]

2 голосов
/ 30 апреля 2020

Да, это должно быть возможно. Я написал следующий тест, и он прошел:

test("Test", () => {
    var createChatRoomMock = jest.fn();

    createChatRoomMock({
        "chatRoomUuid": "chatRoom_sZ9nj4hC46e4bGz4PjYzpC",
        "creatorId": "user_nCQsasvYirUwwoEr3j8HsC"
    });

    expect(createChatRoomMock).toHaveBeenCalledWith({
      creatorId: expect.stringContaining("user_"),
      chatRoomUuid: expect.stringContaining("chatRoom_"),
   });
});

Единственное, что я мог бы предложить, это:

  • Проверка на наличие скрытых символов, таких как пробелы Unicode нулевой ширины в выводе,
  • Если вы не используете последнюю версию Jest, попробуйте обновить. Я использую версию 25.5.2, последнюю на момент написания.
0 голосов
/ 03 мая 2020

Это ошибка в шутке . Если в тесте будет что-то еще не так, Jest покажет их как сбои, даже если они пройдут , например:

  it.only("Test", () => {
    var createChatRoomMock = jest.fn();

    createChatRoomMock({
        "chatRoomUuid": "chatRoom_sZ9nj4hC46e4bGz4PjYzpC",
        "creatorId": "user_nCQsasvYirUwwoEr3j8HsC",
        "somethingElse": "bad"
    });

    expect(createChatRoomMock).toHaveBeenCalledWith({
      creatorId: expect.stringContaining("user_"),
      chatRoomUuid: expect.stringContaining("chatRoom_"),
      somethingElse: expect.stringContaining("good")
    });
  });

покажет (неточно), что другой .toHaveBeenCalledWith() не удалось:

    - Expected
    + Received

      Object {
    -   "chatRoomUuid": StringContaining "chatRoom_",
    -   "creatorId": StringContaining "user_",
    -   "somethingElse": StringContaining "good",
    +   "chatRoomUuid": "chatRoom_sZ9nj4hC46e4bGz4PjYzpC",
    +   "creatorId": "user_nCQsasvYirUwwoEr3j8HsC",
    +   "somethingElse": "bad",
      },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...