Как передать значение из beforeEach () в тест? Мокко / Chai - PullRequest
1 голос
/ 10 ноября 2019

Как передать объект dom из функции beforeEach () в мои тесты?

Например:

describe('2) Key DOM elements exist', function() {

beforeEach(function(done){
    JSDOM.fromURL('http://localhost:3000/', ).then(dom => {
        this.hello = dom;
    });
    done();
  });

  it('a) Header element is present', function() {
        console.log(hello);
        const header = dom.window.document.getElementById('header');
        expect(header).to.exist;
 })
});

1 Ответ

0 голосов
/ 10 ноября 2019

Проблема в том, что this не привязан к обратному вызову function, переданному beforeEach. Решение состоит в том, чтобы .bind(this), использовать функцию стрелки или переменную, ограниченную областью обратного вызова describe.

Вот пример использования функции стрелки:

describe('tests', () => {
  beforeEach(async () =>
    Promise.resolve('foo').then(result => {
      this.dom = result;
    })
  );

  it('works', () => {
    console.log(this.dom); // => foo
  });
});
...