当使用编写单元测试时,请使用Jest 。为什么简单地将值直接分配给全局变量,反之亦然,为什么要使用beforeAll呢?

例如,以下两个片段有什么区别?

片段1

const mock = { key1: 'val1', key2: 'val2' };

describe('Test Cases', () => {
  test('Case 1', () => {
    // tests that use mock variable
  });

  test('Case 2', () => {
    // more tests that use mock variable
  });
});

代码段2
const mock = {};

beforeAll(() => {
  mock.key1 = 'val1';
  mock.key2 = 'val2';
});

describe('Test Cases', () => {
  test('Case 1', () => {
    // tests that use mock variable
  });

  test('Case 2', () => {
    // more tests that use mock variable
  });
});

最佳答案

在您的示例中,它没有任何区别。在某些情况下,使用beforeAll确实很有意义:如果您具有异步代码,则返回 promise 的函数。

如果您从beforeAll回调中返回了一个Promise,则可以在测试中测试Promise最终解析为的值。

引用Jest documentation:


beforeAll(() => {
    return initializeCityDatabase();
});

afterAll(() => {
    return clearCityDatabase();
});

test('city database has Vienna', () => {
    expect(isCity('Vienna')).toBeTruthy();
});

test('city database has San Juan', () => {
    expect(isCity('San Juan')).toBeTruthy();
});

关于javascript - 在Jest中,定义全局变量是否与在BeforeAll中定义的相同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47913168/

10-12 06:26