У меня есть файл tests.js
, содержащий некоторые test(...)
определения. Я хочу повторно использовать эти тесты в нескольких приборах, желательно без каких-либо изменений в исходном коде.
Итак, я написал main.js
, который определяет прибор и импортирует tests.js
, тем самым «собирая» набор тестов. (В случае, если это сработает, я мог бы написать разные файлы драйверов с разными приборами, импортируя один и тот же tests.js
из каждого.)
Однако я получаю test is not defined
ошибку при попытке выполнить main.js
:
C:\Windows\Temp\dummy>testcafe chrome main.js --debug-on-fail
ERROR Cannot prepare tests due to an error.
ReferenceError: test is not defined
at Object.<anonymous> (C:\Windows\Temp\dummy\tests.js:1:1)
at Object.<anonymous> (C:\Windows\Temp\dummy\main.js:7:1)
Type "testcafe -h" for help.
Минимальная выборка:
// tests.js
test('wait', async t => {
await t.wait(1);
});
// main.js
fixture `here goes the name`
.page("http://localhost:3000")
.beforeEach(async t => {
// do stuff
});
import "./tests";
/*
trick testcafe to scan the file;
based on https://github.com/DevExpress/testcafe/issues/2889#issuecomment-423859785
test();
*/
Я уже пробовал:
- удаление взлома блочного комментария (
test();
) - что даетERROR No tests to run. Either the test files contain no tests or the filter function is too restrictive.
- перемещение импорта
tests.js
наверх - все равно даетtest is not defined
- импорт
testcafe
изmain.js
иtests.js
- та же ошибка
Есть ли способ сделать функцию test
"видимой" для других файлов, импортированных файлом точки входа testcafe? Или мне действительно нужно будет изменить мой tests.js
файл, чтобы он заработал? Возможно, добавив определения тестов в метод и вызвав его из main.js
- как в исходном образце кода эта проблема?