Доступ к глобальной переменной из ClientFunction - PullRequest
3 голосов
/ 23 мая 2019

Я хотел бы знать, возможно ли получить доступ к переменной из ClientFunction, или я всегда должен передавать в нее необходимые аргументы?

Я использую ClientFunction TestCafe для выполнения HTTP-запроса (создание нового пользователя). У нас несколько сред, поэтому я не хочу жестко кодировать URL-адрес в запросе.

Если я передам нужный URL-адрес функции, запрос завершится ... но я получил ошибку при попытке доступа к переменной createUserUrl.

import createUserUrl from '../config.js'.createUserUrl;

const createUserRequest = ClientFunction(userDetails => {
  return new Promise(resolve => {
    const xhr = new XMLHttpRequest();

    xhr.open('POST', createUserUrl, true);

    xhr.onload = function() {
      resolve(xhr.responseText);
    };

    // Set headers:
    xhr.setRequestHeader('Content-Type', 'application/json');

    xhr.send(JSON.stringify(userDetails));
  });
});

В результате ReferenceError: reqUrl is not defined.

В противном случае эта опция работает

const createUserRequest = ClientFunction(reqUrl, userDetails => {
  return new Promise(resolve => {
    const xhr = new XMLHttpRequest();

    xhr.open('POST', reqUrl, true);

    xhr.onload = function() {
      resolve(xhr.responseText);
    };

    // Set headers:
    xhr.setRequestHeader('Content-Type', 'application/json');

    xhr.send(JSON.stringify(userDetails));
  });
});

Является ли второй вариант предпочтительным маршрутом или есть способ доступа к переменной из ClientFunction?

1 Ответ

2 голосов
/ 24 мая 2019

Клиентские функции имеют определенные ограничения и не могут получить доступ к переменным, определенным во внешней области. Я также предлагаю вам рассмотреть возможность передачи необходимых переменных через объект options.dependencies клиентской функции:

import { Selector, ClientFunction } from 'testcafe';

const articleHeader = Selector('#article-header');

const getArticleHeaderHTML = ClientFunction(() => articleHeader().innerHTML, {
     dependencies: { articleHeader }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...