Использование Jest's test.each параметризованной области действия тестовой переменной - PullRequest
0 голосов
/ 25 октября 2018

Извините, если мой заголовок - отстой, не совсем уверен, как его описать, но вот пример.

, если у меня есть такой файл спецификации:

let a;
beforeEach(() => {
   a = 'hello';
})

describe('my test suite', () => {
    test.each([
        [a, 'hello']
    ])(
    'testing %s with expected result %s',
    (myVariable, expectedResult) => {
        expect(myVariable).toBe(expectedResult);
    })
});

Я получаю ошибкучто a не определено в параметризованной таблице.Если я использую обычный test метод, у меня есть доступ к a.Просто интересно, есть ли способ обойти эту проблему или я делаю что-то совершенно не так.

1 Ответ

0 голосов
/ 25 октября 2018

Вы забыли закрывающую скобку в строке beforeEach ().

let a;
beforeEach(() => {
   a = 'hello';
} );

У вас также есть i% и% 1 для целых чисел, и вам нужны строки (% s).

Только с одним тестом вам не нужен beforeEach (), и вы можете просто выполнить:

const a:string = 'hello';
test.each([[a, 'hello']])(
    '.compare(%s, %s)',
    (myVariable, expected) => {
        expect(myVariable).toBe(expected);
    },
);

Однако я не могу заставить это работать.Я могу ссылаться на переменную непосредственно в тесте, например:

const a:string = 'hello';
test.each([[a, 'hello']])(
    '.compare(%s, %s)',
    (myVariable, expected) => {
        expect(a).toBe(expected);
    },
);

Использование myVariable не приведет к получению значения из замкнутого цикла теста.Литералы работают, хотя.BeforeEach откажется от цели установки значения, так как его не нужно будет изменять в середине test.each (), поскольку это предназначено для запуска одного и того же теста с разными данными.Вы по-прежнему можете создавать объекты и другие необходимые вещи в вашем beforeEach и ссылаться на них напрямую (моя переменная), но тестовые данные, которые изменяются при каждом запуске, похоже, не получают значение из внешнего цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...