javascript - 在任何事情之前删除数据库

标签 javascript node.js mocha.js sequelize.js

我已经看到了很多关于这个问题的答案,但其中任何一个都对我有用,我不知道为什么。

所以我想在运行测试之前和添加一些之后删除我数据库中的所有数据。这是我到目前为止所做的:

const db = require('../models');

describe('Setup database for testing', () => {
    before('Sync and create data', done => {
        db.sequelize
            .query('SET FOREIGN_KEY_CHECKS = 0', null, {raw: true})
            .then(() => {
                db.User.sync({force: true});
            })

            // Create everything the tests need here
            .then(() => {
                db.User.create({username: 'foo', password: 'secret', email: 'foo@local.dev'});
            })

            .then(() => {
                db.sequelize.query('SET FOREIGN_KEY_CHECKS = 1', null, {raw: true});
            })
            .then(() => {
                done();
            });
    });
});

当我在我的测试文件夹上运行 mocha 时,我没有任何错误,没有告诉我 before 钩子(Hook)正在运行(甚至测试标题也没有显示)。但是该文件正在运行,因为当我在其中编写虚拟代码时,出现了错误。

最佳答案

要运行 before Hook ,您至少需要在 describe 中进行一项测试。

  describe('Setup database for testing', () => {
    before('Sync and create data', done => {
        db.sequelize
            .query('SET FOREIGN_KEY_CHECKS = 0', null, {raw: true})
            .then(() => {
                db.User.sync({force: true});
            })

            // Create everything the tests need here
            .then(() => {
                db.User.create({username: 'foo', password: 'secret', email: 'foo@local.dev'});
            })

            .then(() => {
                db.sequelize.query('SET FOREIGN_KEY_CHECKS = 1', null, {raw: true});
            })
            .then(() => {
                done();
            });
    });


    //add a test for the before hook to run 
    it("runs", function () {
        console.log("test");
    });
});

关于javascript - 在任何事情之前删除数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47344144/

相关文章:

javascript - 动画 Javascript classList.toggle

javascript - onclick 按钮不调用函数

javascript - NodeJs 未定义不是一个函数

javascript - 单元测试嵌套 promise 因超时而失败

javascript - CKEditor : Remove default text "image preview" in box using CKEditor

javascript - JQuery:对话框不会触发自动完成

parsing - 如何正确解析带有姓名的电子邮件地址?

node.js - 如何通过 NodeJS REST 请求添加文件附件

testing - 我如何将值从一个 MochaJS 测试传递到另一个?

javascript - AngularJS 使用 Mocha 测试工厂