我的索引操作将列出数据库中的客户,我想测试没有数据库依赖关系的控制器,所以我需要模拟客户变量。
我发现的一种方法是在全球范围内设置客户:
process.env.NODE_ENV = 'test'; var request, expect, app; var customers = [ { name : 'Customer A', email : "a@customer.com"}, { name : 'Customer B', email : "b@customer.com"}, { name : 'Customer C', email : "c@customer.com"}, { name : 'Customer D', email : "d@customer.com"} ]; global.customers = customers; request = require('supertest'); expect = require('expect.js'); app = require('../index'); describe('GET /api/customers', function(){ it('should list the customers', function(done){ request(app) .get('/api/customers') .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(200) .end(function(err, res){ expect(res.body.length).to.be(4) done() }); }); });
var _dataFromMyDatabase = [ { name : 'Customer from Database', email : "database@customer.com"} ]; exports.index = function(req, res){ var customers = global.customers || _dataFromMyDatabase; res.json(customers); };
但我想这不是更好的方法,所以我正在寻找更好的主意。 :)
有人可以帮助我吗?