Sails.js和Mocha:使用supertest创build一个新的模型
我目前正在为我的Sails应用程序设置testing基础架构,并且一直在顺利进行,直到我尝试使用supertest
testing来testingAPI请求。
我试图testing一些我的控制器方法(我实现,而不是使用默认蓝图路线),但似乎API请求甚至没有经过。 我认为这是因为我可以运行npm test
,这段代码运行良好,但是如果我将POSTpath更改为/datamodel/create5
,其中create5()
不作为控制器方法存在,它仍然运行正常。在这两种情况下,都不会创buildDataModel模型。 我已经在下面包含了一些代码。
这是我的代码看起来像:
var request = require('supertest'); var assert = require('assert'); var async = require('async'); var stubs = require('../stubs.js'); describe('DataModel', function() { var testDataModel; var dataModelParams = stubs.dataModelStub(); // simply returns a JSON dictionary describe('#create()', function() { describe('data model import', function() { it('should import a new data model.', function (done) { var agent = request.agent(sails.hooks.http.app); agent .post('/datamodel/create') .send(dataModelParams) .expect(302) .end(function (err, res) { if (err) { throw new Error(err); } console.log(res.dataModel); DataModel.find().exec(function (err, dataModels) { console.log(dataModels); // should return an array of 1 model but returns empty array instead done(); }); }); }); }); });
我的控制器代码片段:
create: function(req, res) { DataModel.create(req.params.all(), function dataModelCreated(err, dataModel) { if (err) { sails.log.debug(err); } FlashService.success(req, 'Successfully imported a new data model.'); fs.ensureDirSync(path.join(sails.config.paths.DATASET_EXTRACT_PATH, dataModel.fileSafeName)); fs.ensureDirSync(path.join(sails.config.paths.DATASET_DOWNLOAD_ROOT, 'non_pii', dataModel.fileSafeName)); fs.ensureDirSync(path.join(sails.config.paths.DATASET_DOWNLOAD_ROOT, 'pii', dataModel.fileSafeName)); fs.ensureDirSync(path.join(sails.config.paths.DATASET_ENCRYPT_PATH, dataModel.fileSafeName)); return res.redirect('/admin/manage_data_models'); }); }
请注意,在我的应用程序启动时, create
函数在实践中正确运行。 有什么build议,为什么我的testing不能正常工作? 如果有帮助,我正在使用sails-memory
进行testing。
我想到了。 我需要首先validation我的代理人(通过拨打login路线),然后再进行任何通话。
主要有:
var agent = request.agent(sails.hooks.http.app); agent.post('YOUR_LOGIN_ROUTE').end(done); // do your tests
嗯,你不需要传递一些像suils应用程序那样的东西吗? 这里有个例子显示你需要做什么。 在第二个答案看前面的函数:
如何在Sails中使用摩卡testing控制器?
- MongoDB mongoose子文档创build两次
- 如何使用Google数据存储创build模式(在JavaScript中)?
- 使用ajax调用Express JS问题更新会话值
- 使用application / x-www-form-urlencoded使用node.js发送数据
- “DEBUG = myapp:* npm start”的解释实际上是在做
- 在heroku上运行的Node.js应用程序 – 找不到模块./http
- Mongoose:CastError:强制转换为ObjectId在path“_id”处的值“me”失败
- MissingSchemaError:架构没有被注册为模型,mongoose.model在架构之前调用
- 做多个MongoDB操作的正确方法