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)
new Promise()正在尝试创建一个没有执行程序功能的承诺*。正确的用法是传入一个最多接受两个参数(resolve和reject)的函数,例如:
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构造函数作为第一个参数传递给它的函数......