JS:Promise 解析器不是函数

use*_*695 4 javascript reactjs jestjs

我正在尝试运行这个 jestJS 单元测试,但我确实得到了TypeError: Promise resolver undefined is not a function. 我究竟做错了什么?

it('_onSubmit() should throw error if data is missing', (done) => {
  const createUserMutation = () => new Promise()
  const wrapper = shallow(<CreateAccount createUserMutation={createUserMutation} />)
  wrapper.update().find(Form).simulate('submit', {
    preventDefault: () => {}
  })
  createUserMutation.resolve().then(() => {
    expect(console.error).toHaveBeenCalled()
    done()
  })
})
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 9

new Promise()正在尝试创建一个没有执行程序功能的承诺*。正确的用法是传入一个最多接受两个参数(resolvereject)的函数,例如:

var p = new Promise((resolve, reject) => {
    // ...code that does something, ultimately calls either resolve or reject
});
Run Code Online (Sandbox Code Playgroud)

更多关于 MDN:

后来,您似乎试图调用resolvepromise 实例。你也不能这样做(除非你没有使用标准的承诺)。您使用resolve传递给执行程序的函数来解析承诺。(我试图为你修改你的代码,但需要太多的上下文信息。)


* 我很惊讶地看到 V8 的错误消息说“解析器功能”,但我已经验证它确实如此。规范称它为执行器,我原以为“解析器函数”将是Promise构造函数作为第一个参数传递给它的函数......