关于ZAKER 融媒体解决方案 合作 加入

node.js- 使用数据库进行自动化测试

CocoaChina 11-11

我对自动化测试还很陌生 , 并且想知道应该如何为数据库编写测试 . 我现在正在处理的项目正在 Node.JS 环境中以 Sequelize 作为 ORM 运行 PostgreSQL. 如果有关系 , 我现在也将 Jest 用作测试库 .

最佳答案

在我的应用程序中 , 我使用配置模块来控制不同环境的配置设置 . 运行测试时 , 将 process.env.APP_ENV 设置为 test, 并将方言设置为 sqlite. 请注意 , 您将没有任何数据或数据持久性 , 因此您需要使用测试所需的所有数据填充它 .

包括 sqlite3

yarn add -D sqlite3

要么

npm i -D sqlite3

设定档

module.exports = { database: { name: 'dbname', user: 'user', password: 'password', host: 'host', // Use "sqlite" for "test", the connection settings above are ignored dialect: process.env.APP_ENV === 'test' ? 'sqlite' : 'mysql', },};

数据库 / 序列化

// get our configconst config = require ( '../config' ) ;... // codeconst instance = new Sequelize ( config.database.name, config.database.user, config.database.password, { host: config.database.host, // set the dialect, will be "sqlite" for "test" dialect: config.database.dialect, } ) ;

测试班 ( 摩卡咖啡 )

const TestUtils = require ( './lib/test-utils' ) ;describe ( 'Some Tests', ( ) => { let app = null; // run before the tests start before ( ( done ) => { // Mock up our services TestUtils.mock ( ) ; // these are instantiated after the mocking app = require ( '../server' ) ; // Populate redis data TestUtils.populateRedis ( ( ) => { // Populate db data TestUtils.syncAndPopulateDatabase ( 'test-data', ( ) => { done ( ) ; } ) ; } ) ; } ) ; // run code after tests have completed after ( ( ) => { TestUtils.unMock ( ) ; } ) ; describe ( '/my/route', ( ) => { it ( 'should do something', ( done ) => { return done ( ) ; } ) ; } ) ;} ) ;

运行测试

APP_ENV=test ./node_modules/.bin/mocha

您也可以通过其他方式使用 ENV 变量来设置方言和连接参数 - 上面的示例只是基于我们对许多支持代码所做的工作 .

以上内容由"CocoaChina"上传发布 查看原文
相关标签 数据库测试app