使用模拟sinon在节点上测试mysql

问题描述 投票:3回答:1

我有一个mysql表,我试图通过使用sinon.js模拟对其进行测试来查看是否保存了用户。

我的user.js模型具有以下代码。

saveUser = (userinfo) => new Promise((resolve,reject)=>{
    var salt = bcrypt.genSaltSync(10);
    var hash = bcrypt.hashSync(userinfo.password, salt);
    userinfo.password = hash;
    userinfo.token = jwt.sign({email : userinfo.email},'secretkeyyo');
    db.query('INSERT INTO user SET ?',userinfo,function(error,results,fields){
        if(error){
            reject('Could not save users to mysql');
        }else{
            resolve(results.insertId);
        }
    })
});

[userinfo通常具有以下字段:Owner , firstname lastname email password token,在被散列后会保存到用户表中]

我有一个要运行的测试文件,但不确定如何继续进行

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');

it('should mock insert statement',(done)=>{
    var mock;
    mock = sinon.mock(require('mysql'))
    mock.expects(saveUser).with(queryString, queryParams).yields(null, rows);
});

不确定如何使用模拟来测试查询。不确定queryStringqueryParams

javascript mysql unit-testing mocking sinon
1个回答
0
投票

您找到答案了吗?

© www.soinside.com 2019 - 2024. All rights reserved.