Javascript 开玩笑不';当考试应该通过时,不要不及格
我从jest fetch mock npm包示例中获取了精确的代码示例,我不能让它失败。谁能告诉我我做错了什么 这是我的代码:Javascript 开玩笑不';当考试应该通过时,不要不及格,javascript,jestjs,Javascript,Jestjs,我从jest fetch mock npm包示例中获取了精确的代码示例,我不能让它失败。谁能告诉我我做错了什么 这是我的代码: require('jest-fetch-mock')。enableMocks(); const APIREST=(谁)=>{ 如果(谁==‘谷歌’){ 返回获取('https://google.com然后((res)=>res.json()); }否则{ 返回“未提供参数”; } }; 描述('测试api',()=>{ 在每个之前(()=>{ fetch.resetMo
require('jest-fetch-mock')。enableMocks();
const APIREST=(谁)=>{
如果(谁==‘谷歌’){
返回获取('https://google.com然后((res)=>res.json());
}否则{
返回“未提供参数”;
}
};
描述('测试api',()=>{
在每个之前(()=>{
fetch.resetMocks();
});
它('调用google并将数据返回给我',()=>{
fetch.mockResponseOnce(JSON.stringify({data:'12345'}));
//在响应上断言
apirest('google')。然后((res)=>{
expect(res.data).toEqual('not 12345');
});
});
});
即使很明显,我对提取的模拟响应与我的预期结果不匹配,jest仍然说测试通过了,为什么?在“测试通过”部分上面,它告诉我它收到了超出预期的内容,但测试仍然显示“通过”,为什么?在这种情况下,我如何才能使它失败,在这种情况下,它实际上是如何预期的。有两种可能的解决方案:
expect.assertions
使jest验证是否所有断言都已断言,并返回承诺:it('调用谷歌并将数据返回给我',()=>{
fetch.mockResponseOnce(JSON.stringify({data:'12345'}));
期望.断言(1);
//在响应上断言
返回apirest('google')。然后((res)=>{
expect(res.data).toEqual('not 12345');
});
});
});
如果您返回一个承诺,jest将知道代码是异步运行的
async/await
语法:
it('调用google并将数据返回给我',async()=>{
fetch.mockResponseOnce(JSON.stringify({data:'12345'}));
期望.断言(1);
//在响应上断言
const result=等待APIRESQUEST('google'))
期望(结果)。toEqual(“不是12345”);
});
});
您的问题有两种可能的解决方案:
expect.assertions
使jest验证是否所有断言都已断言,并返回承诺:it('调用谷歌并将数据返回给我',()=>{
fetch.mockResponseOnce(JSON.stringify({data:'12345'}));
期望.断言(1);
//在响应上断言
返回apirest('google')。然后((res)=>{
expect(res.data).toEqual('not 12345');
});
});
});
如果您返回一个承诺,jest将知道代码是异步运行的
async/await
语法:
it('调用google并将数据返回给我',async()=>{
fetch.mockResponseOnce(JSON.stringify({data:'12345'}));
期望.断言(1);
//在响应上断言
const result=等待APIRESQUEST('google'))
期望(结果)。toEqual(“不是12345”);
});
});
不要忘记,在像这样的承诺中(()=>{blah blah})
,该代码是异步执行的。您的测试在执行.then()
之前完成。将回调函数传递给it()
async
,然后等待apirest('google')
。(因此,让res=wait-apirest('google');expect(res.data.).toEqual('not 12345');
)不要忘记,在像这样的承诺中,然后(()=>{blah})
,该代码异步执行。在执行.then()
之前,测试完成。将回调函数传递给it()
async
,然后等待apirest('google')
。(所以let res=wait-apirest('google');expect(res.data).toEqual('not 12345');
)