我正在使用https://github.com/sequelize/sequelize来学习使用数据库迁移。这很好。
下一步,我希望能够运行测试。我的测试非常简单(不使用与Sequelize相关的任何内容),看起来像
import request from 'supertest';
import app from '../src/app.js';
describe('GET /', () => {
it('should render properly', async () => {
await request(app).get('/').expect(200);
});
});
describe('GET /404', () => {
it('should return 404 for non-existent URLs', async () => {
await request(app).get('/404').expect(404);
await request(app).get('/notfound').expect(404);
});
});
当我以npm test
运行时,我收到错误
➜ contactz git:(master) ✗ npm test
> express-babel@1.0.0 test /Users/harit/bl/sources/webs/q2/contactz
> jest
FAIL test/routes.test.js
● Test suite failed to run
TypeError: Cannot read property 'use_env_variable' of undefined
at Object.<anonymous> (db/models/index.js:11:11)
at Object.<anonymous> (src/routes.js:3:14)
at Object.<anonymous> (src/app.js:4:15)
at Object.<anonymous> (test/routes.test.js:2:12)
at Generator.next (<anonymous>)
at Promise (<anonymous>)
Test Suites: 1 failed, 1 total
Tests: 0 total
Snapshots: 0 total
Time: 0.702s
Ran all test suites.
npm ERR! Test failed. See above for more details.
➜ contactz git:(master) ✗
我是NodeJS
,Express
的新手,所以不知道这里出了什么问题
该代码位于https://github.com/hhimanshu/contactz
有人可以帮助我了解错误以及如何解决问题吗?
答案 0 :(得分:0)
而不是npm测试,你能尝试这个命令吗? jest yourfile.js --env = node --runInBand
答案 1 :(得分:0)
我只是使用javascript trim()
process.env.NODE_ENV() // return "development " with space
process.env.NODE_ENV.**trim()** // "development" no space
这是我的solution
答案 2 :(得分:0)
我是服务器领域的新手,尤其是heroku + node express + sequelize。因此,就我而言,我在Heroku设置上的配置变量是错误的。
NODE_ENV
设置为错误的值,例如live
而不是production
。
假设您也在使用Sequelize,则正确值production
必须等于config.js
。
答案 3 :(得分:0)
我今天收到此错误,并已解决。
运行笑话时,默认情况下会将NODE_ENV(process.env.NODE_ENV)设置为“测试”。
如果您使用sequelize-cli生成了基本的sequelize文件,则在sequelize config.json文件中(默认情况下)应使用三种类型的配置选项:“开发”,“测试”和“生产”。 但是我看到您正在使用自己的config.js文件,并且那里没有“测试”选项,只有开发和生产https://github.com/hhimanshu/contactz/blob/master/db/config.js
您正在收到此错误,因为model / index.js文件正在寻找上述“测试”选项,但发现它未定义。具体来说,在https://github.com/hhimanshu/contactz/blob/master/db/models/index.js的第12行,它将发现配置未定义,并在查找未定义的use_env_variable属性时引发错误。
解决方案是将“测试”配置添加到您的config.js文件中。只需复制用于开发的配置,它就可以运行。
*请注意,您可能应该为每种不同类型的配置设置不同的数据库,但这是另一个主题。