您将如何测试使用Jest返回诺言的方法

时间:2019-08-04 14:34:48

标签: javascript reactjs jestjs es6-promise

我想知道如何用笑话来测试返回承诺以解决另一种方法的方法。

例如:-

    getUser() {
    const getListFromDatabase= this.getListFromDatabase.bind(this);
    const getListFromUser= this.getListFromUser.bind(this);
    return new Promise((resolve) => {
      const myList = Cookies.get('myList');
      if (myList) {
        resolve(myList);
      } else if (CONFIGURATION.ENABLED) {
        resolve(getListFromDatabase());
      } else {
        resolve(getListFromUser());
      }
    });
  },

getListFromDatabasegetListFromUser是我主要对象中的其他方法。

getUser()是我的主要对象中的一种方法。

所以现在我想开个玩笑的单元测试,以测试如果找到了cookie,我们解析了一个数组(myList),如果启用了全局配置变量,则解析了getListFromDatabase(),否则{{1 }}。

我返回解决的新承诺这一事实使我对走哪条路感到困惑,与getListFromUser()expect().resolves

1 个答案:

答案 0 :(得分:0)

您可以使用flush-promises来解决承诺,那么您无需等待承诺。

示例:

test('flushPromises', async () => {
  let a;
  let b;

  Promise.resolve().then(() => {
    a = 1;
  }).then(() => {
    b = 2;
  })

  await flushPromises();

  expect(a).toBe(1);
  expect(b).toBe(2);
});