在“预测试”脚本中执行两个 Sequelize 命令时出现“错误:验证错误”消息

gam*_*ofe 5 testing postgresql node.js sequelize.js

我正在为我的项目编写测试。它使用 Sequelize,我考虑过以下操作:

"pretest": "NODE_ENV=testing yarn sequelize db:migrate && yarn sequelize db:seed:all",
"test": "mocha --require @babel/register 'src/tests/**/*.spec.js'",
"posttest": "NODE_ENV=testing yarn sequelize db:migrate:undo:all"
Run Code Online (Sandbox Code Playgroud)

但以下显示:

? yarn test     
yarn run v1.19.2
$ NODE_ENV=testing yarn sequelize db:migrate && yarn sequelize db:seed:all
$ /home/gabriel/Workspace/graphql-apollo/node_modules/.bin/sequelize db:migrate

Sequelize CLI [Node: 12.13.1, CLI: 5.5.1, ORM: 5.21.2]

Loaded configuration file "src/config/database.js".
== 20191123132531-create-users: migrating =======
== 20191123132531-create-users: migrated (0.047s)

== 20191123132658-create-messages: migrating =======
== 20191123132658-create-messages: migrated (0.028s)

$ /home/gabriel/Workspace/graphql-apollo/node_modules/.bin/sequelize db:seed:all

Sequelize CLI [Node: 12.13.1, CLI: 5.5.1, ORM: 5.21.2]

Loaded configuration file "src/config/database.js".
== 20191123132945-users: migrating =======

ERROR: Validation error

error Command failed with exit code 1.
Run Code Online (Sandbox Code Playgroud)

如果我分别执行迁移和播种命令,它工作正常。我也尝试使用concurrently,但也会发生同样的情况。

"pretest": "concurrently 'NODE_ENV=testing yarn sequelize db:migrate' 'yarn sequelize db:seed:all'",
Run Code Online (Sandbox Code Playgroud)

小智 7

@gamofe 将--debug标志添加到命令中以查看有关错误的更多信息。例如

    $ sequelize db:seed:all --debug
Run Code Online (Sandbox Code Playgroud)

您很可能会收到此错误,因为您在运行时sequelize db:seed:all没有撤消先前的种子。如果您的表已包含您尝试播种的数据,其中某些数据具有唯一约束,则您将遇到唯一约束错误。要解决此问题,您需要运行sequelize db:seed:undo:all播种前。您可以在这里找到更多信息https://sequelize.org/master/manual/migrations.html


小智 0

我遇到了同样的问题并设法解决如下:

错误:“预测试”:“NODE_ENV =测试续集db:迁移&&续集db:seed:all”

右:“预测试”:“NODE_ENV =测试续集db:迁移&& NODE_ENV =测试续集db:seed:all”