testing将数据保存在数据库中

您好我试图运行摩卡和柴testing来testing我的节点js路由器,它保存在mysql数据库中的用户,然后返回相同的数组。

我现在面临的问题是,当我从本地运行数据库时,我不想将信息保存在数据库中,而当我使用像Travis / Ci这样的连续集成软件时,testing失败,因为没有数据库连接。 我想知道如何testing数据库保存与当前没有实际保存到数据库。

基本上意味着有一个虚拟的虚拟数据库来保存或返回保存。

我读了sinon.js可以帮助,但我不知道如何使用它。

这是我的代码

var expect = require('chai').expect; var faker = require('faker'); const request = require('supertest'); const should = require('should'); const sinon = require('sinon'); const helper = require('../../models/user'); describe('POST /saveUser',()=>{ it('should save a new user',(done)=>{ var fake = request(app) .post('/saveUser') .send({ Owner : faker.random.number(), firstname : faker.name.firstName(), lastname : faker.name.lastName(), email:faker.internet.email(), password : faker.random.number(), token : faker.random.uuid() }) .expect(200) .expect((res)=>{ expect(res.body.firstname).to.be.a("string"); expect(res.body.lastname).to.be.a("string"); expect(res.body.Owner).to.be.a("number"); }) .end(done); }); }); 

这是路由器

 router.post('/saveUser',(req,res,next)=>{ saveUser(req.body).then((result)=>{ return res.send(req.body); }).catch((e)=>{ return res.send('All info not saved'); }); }); 

这是模型

 saveUser = (userinfo) => new Promise((resolve,reject)=>{ db.query('INSERT INTO user SET ?',userinfo,function(error,results,fields){ if(error){ reject(); }else{ resolve(userinfo); } }) }); 

你所描述的是一个存根。 用sinon你可以像下面这样存根方法和调用伪造方法:

 sinon.stub(/* module that implements saveUser */, 'saveUser').callsFake(() => Promise.resolve()); 
Interesting Posts