Ожидание смешения шуток с ожиданием детоксикации

Как совместить ожидания Jest с ожиданиями Detox? Вот что я пытаюсь сделать. Кажется, expect пересилил шутку expect.

await mockServer.mockAnyResponse({
    httpRequest: {
      method: 'POST', 
      path: '/api/register',
    },
    httpResponse: {
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        token: 'xxx',
      }),
    }
});

await element(by.id('name')).typeText('Robert');
await element(by.id('password')).typeText('123456');
await element(by.id('register')).tap();

// Check if endpoint has been called
let result = await mockServer.checkIfRegisterEndPointHasBeenCalled();
expect(result).toBe(true); // <-- how to do something like this?

person invisal    schedule 13.07.2018    source источник
comment
Вы нашли хорошее решение для этого?   -  person tom    schedule 29.10.2018


Ответы (3)


Это делается в два этапа:

  1. Когда вы используете detox.init(), передайте ложный параметр initGlobals, например: detox.init({ initGlobals: false }). Это отключит переопределение глобальных переменных, таких как expect Jest.
  2. Используйте общедоступные переменные detox через const { device, expect } = require('detox'); или аналогичный импорт ES6.
person noomorph    schedule 13.07.2018
comment
Импорт ES6 по-прежнему не поддерживается в узле, для этого вам придется использовать Babel, что сильно усложняет настройку. - person Rotemmiz; 27.07.2018
comment
В документации указано detox.init(config, {initGlobals: false});. Имеет ли это тот же результат, что и detox.init({ initGlobals: false }), или один из них неправильный? - person tom; 29.10.2018

Другой вариант — игнорировать тот факт, что Detox перезаписал expect, и повторно импортировать expect Jest под другим именем.

const jestExpect = require('expect');

person tom    schedule 29.10.2018

Не уверен, что это очевидно для более опытного «тестировщика», но два других ответа верны лишь частично и упускают то, с чем у меня возникли проблемы: вы получаете undefined при попытке доступа или require expect глобально, вы должны сделать это в рамках теста.

Итак, вам нужно будет сделать следующее:
В файле init.js:

before(async () => {
  await detox.init(config, {initGlobals: false});
});

В вашем тестовом файле - либо фактическое itconst), либо beforelet jestExpect в describe):

jestExpect = require('expect');
person MikeL    schedule 07.10.2019