匹配器

名称 测试项 备注
toBe 精确匹配 使用Object.is
toEqual 相等 递归检查数组每一项或对象每个字段
not 取反
toBeNull 匹配null
toBeUndefined 匹配undefined
toBeDefined 与toBeUndefined相反
toBeTruthy 真值 与if判断方式相同
toBeFalsy 假值 与if判断方式相同
toBeGreaterThan >
toBeGreaterThanOrEqual >=
toBeLessThan <
toBeLessThanOrEqual <=
toBeCloseTo 浮点数相等 不能用equal
toMatch 正则表达式匹配
toContain 数组或可迭代对象包含
toThrow 期望抛出错误 参数可为字符串/正则表达式

测试异步代码

回调

若有一函数fetchData(callback),获取数据并调用callback。

  1. // 错误写法
  2. test('the data is peanut butter', () => {
  3. function callback(data) {
  4. expect(data).toBe('peanut butter');
  5. }
  6. fetchData(callback);
  7. });

fetchData调用完成后,测试就结束,不会等待回调结束。

  1. test('the data is peanut butter', done => {
  2. function callback(data) {
  3. expect(data).toBe('peanut butter');
  4. done();
  5. }
  6. fetchData(callback);
  7. });

如果done一直不被调用,则测试失败。

Promise

若fetch返回Promise

  1. test('the data is peanut butter', () => {
  2. return fetchData().then(data => {
  3. expect(data).toBe('peanut butter');
  4. });
  5. });