Представьте себе экран, на котором отображается список зданий с указанием расстояния до них из текущего местоположения устройства. Этот список вычисляет расстояние на креплении и только при обновлении.
Вот как я написал этот тест,
beforeAll(async () => {
const launchParams = {
permissions:
{
location: 'inuse'
}
};
await launchApp(launchParams);
await device.setLocation(office.lat, office.lon);
...
});
Этот тест пройден успешно,
it.only('should show <building_name> distance as 15.6km', async () => {
await inputSearchQuery({ query: '<building_name>' });
await expectElementByIdToHaveText({ elementId: TestID.DISTANCE, ancestorId: 'b1da9f0d-218e-4a8f-ab65-bdf1eb3b9764', text: ' 15.6km' });
});
Затем я хочу смоделировать перемещение ближе к этому зданию, а затем пользователь обновляет список. Таким образом,
it.only('should show <building_name> distance as 29m after changing location', async () => {
await device.setLocation(closeToBuilding.lat, closeToBuilding.lon);
await inputSearchQuery({ query: '<building_name>' });
await element(by.id(TestID.BUILDINGS_SECTION_LIST)).swipe('down');
await expectElementByIdToHaveText({ elementId: TestID.DISTANCE, ancestorId: 'b1da9f0d-218e-4a8f-ab65-bdf1eb3b9764', text: ' 29m' });
});
В этом случае расстояние указывается так же, как и в параметре beforeAll (), а не в test ().
Однако если я возьму этот тест в свой собственный файл, он будет работать, как и ожидалось (поскольку, очевидно, я правильно устанавливаю местоположение в beforeAll ()).
Мои вопросы
1) Можем ли мы установить местоположение только в beforeAll ()?
2) Разве мы не можем установить местоположение более одного раза в тестовом файле?
3) Если бы я должен был смоделировать движение пользователя и увидеть изменения, отраженные на экране, что было бы лучше, если бы это было?