Следуя руководству по началу работы с Testcafe на странице http://devexpress.github.io/testcafe/documentation/getting-started/ У меня возникли проблемы с изменением образца сценария тестирования.
Версия Typescript: 2.7.2 Версия узла: 8.7.0 Версия Webstorm: 2017.2.6
import {Selector} from 'testcafe';
fixture `Getting Started`
.page `http://some-website.com`;
test('Test', async t => {
})
Это компилируется и работает нормально. Я читал, что Typescript поддерживает создание шаблонов строк, а в примере теста уже используются обратные кавычки для окружения строк, поэтому я попытался выделить часть URL-адреса:
import {Selector} from 'testcafe';
let domain = 'some-website.com';
fixture `Getting Started`
.page `http://${domain}`;
test('Test', async t => {
})
Это приводит к ошибке «TS2554: Ожидается 1 аргумент, но получено 2», и webstorm выделяет две строки кода, начинающиеся с fixture(
.
Попытка полностью заменить аргумент .page
переменной приводит к другой ошибке компиляции.
import {Selector} from 'testcafe';
let domain:string = 'premierrange-local.com';
let str:string = `http://${domain}`;
fixture `Getting Started`
.page str;
test('Test', async t => {
})
"TS1005: ';' ожидал." об использовании переменной str
.
Однако заключение str
в скобки решает ошибку компиляции:
import {Selector} from 'testcafe';
let domain:string = 'premierrange-local.com';
let str:string = `http://${domain}`;
fixture(`Getting Started`)
.page(str);
test('Test', async t => {
})
Это компилируется и работает нормально. Кажется, скобки вокруг аргументов page
необходимы, если передается переменная, но не в случае строкового литерала? Но моя первая попытка просто ввела интерполяцию переменных, и это было сочтено ошибкой компиляции.
Определение page()
выглядит так (из node_modules/testcafe/ts-defs/index.d.ts
):
page(url: string | TemplateStringsArray): this;
Может кто-нибудь объяснить, почему Typescript считает мои первые модификации незаконными?