Тест Vue использует неверное значение вычисленного

#unit-testing #vue.js #vuejs2 #vue-test-utils

#модульное тестирование #vue.js #vuejs2 #vue-test-utils

Вопрос:

Здравствуйте, я проверил поведение в приложении, и оно работает с api теми же данными, что и в том, что я предоставляю в mocked вызове api Api.contracts.getContractDetails.mockImplementationOnce(() => ({ data })); , однако значение hasWatermark computed равно false — хотя оно должно быть true .

Как я могу это отладить? Можно ли проверить вычисленное в тестах? Это мой тест:

 
function createWrapper() {
    const i18n = new VueI18n({
      locale: "en",
      missing: jest.fn(),
    });

    return mount(EmployeeContract, {
      i18n,
      localVue,
      store,
      mocks: { $route: { query: {}, params: { id: "123" } }, $buefy: { toast: { open: jest.fn() } } },
      stubs: ["spinner", "router-link", "b-switch"],
    });

it("should add watermark for preview once it has rejected status", async () => {
    const data = singleContract;
    Api.contracts.getContractDetails.mockImplementationOnce(() => ({ data }));
    const wrapper = createWrapper();

    await flushPromises();
    expect(wrapper.vm.hasWatermark).toBeTruthy();
  });

 

Комментарии:

1. Вы можете отлаживать тесты локально в VS Code. Это не лучший опыт (пока), но, по крайней мере, вы можете устанавливать точки останова и видеть значения jestjs.io/docs/en/troubleshooting

2. Здесь недостаточно контекста для определения проблемы. Как это hasWatermark связано с созданным вами макетом? Что такое singleContract ?

3. @tony19 это гигантский объект с измененным значением из вызова API. Дело в том, что он работает так, как ожидалось, в браузере, только тесты терпят неудачу.