在 NextJS 应用程序中使用 Jest 和 React 测试库将我的故事集成到单元测试中时,我遇到了问题。在 Storybook 中,我的 NextJS 组件渲染时没有问题,Storybook Addon Next Router按预期工作。但是,在我的 Jest 测试文件中,我的测试抛出错误,因为 useRouter() 返回 null。我相信我已经正确设置了所有插件。
我已经根据文档设置了所有文件。故事在 Storybook 中渲染得很好,并且 useRouter() 的工作得益于 Storybook Next 插件。但是,composeStories()@storybook/testing-react 中的函数似乎无法从第一个插件正确初始化 Next router Provider。我的单元测试失败并出现以下错误:
测试套件无法运行
TypeError: 无法读取 null 的属性“区域设置”
并指向我的组件内的以下行:
// Events.tsx
const { locale = 'en' } = useRouter();
Run Code Online (Sandbox Code Playgroud)
这是我的测试文件:
// Events.test.tsx
import React from 'react';
import { …Run Code Online (Sandbox Code Playgroud) 我试着研究这个问题的原因; 这很可能是我对Mongoose工作方式的误解.我正在尝试用REST风格创建一个CRUD后端.GET,PUT,POST似乎都有效.但是,我对DELETE动词的问题有点不知所措.
我和Postman一起把一些假数据输入mongo,一切顺利.所以我复制了我的一个记录的_id字段并尝试删除.当我发送DELETE请求时,成功消息通过,记录确实已从mongo中删除.但是,在删除其他记录后,我决定尝试使用已删除的文档的_id删除记录.
我向'api/brothers/57280602953cff031f21ad9c'发送了DELETE请求
原来NodeJS崩溃了!
这是相关的服务器代码:
// DELETE a brother by id
app.delete('/api/brothers/:id', function(req, res) {
Brother.findById(req.params.id, function(err, brother) {
if (err) {
// error finding brother
res.json(err);
} else {
// remove record
brother.remove(function(err, brother) {
if (err) {
// error removing!
res.send(err);
} else {
// successful DELETE!
res.json({
message : "successfully deleted",
brother : brother
});
}
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
Nodejs崩溃,我的控制台窗口返回以下内容:
TypeError: Cannot read property 'remove' of null
[nodemon] app crashed - waiting for file …Run Code Online (Sandbox Code Playgroud)