如何在用户使用护照登录的情况下测试帆.js控制器.js
How to test sail.js controller with user logged in with passport.js
我尝试对我的 sail.js 控制器进行单元测试,该控制器需要用户登录。我目前的测试是:
var request = require('supertest'), // I try to use 'superagent', this changes nothing
user = request.agent;
describe('SomeController', function() {
// login user first of all
before(function(done) {
user(sails.hooks.http.app)
.post('/user/login')
.send({username: 'hellocat', password: '123456789'})
// request works well by itself,
// it does not return error and return normal response.
.end(function (err, res) {
// then I try to save cookies of logged in user to it agent
user(sails.hooks.http.app).saveCookies(res);
done();
});
});
// let test something
it('must return "ok" when user is logged in or "wtf" if opposite', function(done) {
user(sails.hooks.http.app)
.get('/user/me')
.end(function(err, res) {
console.log(res.body);
// no need to expect something, user is not logged in (
done();
});
});
});
在钩子运行良好并且我的用户在请求结束时登录之前。但在测试中并非如此。在所有测试开始运行之前,我举起帆应用程序。不需要授权的类似测试效果很好。我想错误可能在于 cookie 保存或对如何使用超级测试代理的错误理解。我做错了什么?
好吧,我终于找到了我的错误。 request.agent
函数不返回单例。因此,user(sails.hooks.http.app)
的每次调用实际上是新代理和新用户。为了使这个测试片段工作,我应该做这样的事情
var request = require('supertest'),
agent = request.agent;
并在描述部分呼叫代理一次:
describe('SomeController', function() {
var user;
before(function(done) {
user = agent(sails.hooks.http.app);
user
.post('/user/login')
// ...
// ...
相关文章:
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 如何在没有单词的情况下从命令行运行Node.js程序'节点'
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 如何在不使用JS发出新请求的情况下读取当前标头
- 如何在不重新加载URL的情况下查询Node.Js的后端并更新页面
- vue-js-单选按钮won't默认情况下使用v-model属性进行检查
- 在知道对象值的情况下,确定数组中JS对象的索引
- 如何通过JS在不干扰其标记的情况下更改HTML文档中字符串的所有实例
- 如何在没有表单提交、没有js、没有jquery和没有ajax的情况下将输入的文本框值存储到php变量中
- 在 JS 中使 for 循环在没有库的情况下等待
- 如何在不刷新 node.js 和 ejs 的情况下提交表单
- 如何在不停止的情况下永远运行node-js
- Rails/JS-在不刷新页面的情况下获取变量
- 如何在启用ES6功能的情况下运行Node.js应用程序
- 如何在没有bundler的情况下使用react.js
- 如何在没有类属性的情况下使用Rangy.js创建标记
- 在这种情况下,我可以使用 JS 变量吗以及如何使用
- Node.JS在没有停止Node.JS脚本的情况下再次运行NodeMsql查询
- knightlab timeline js-如何在不重叠的情况下显示事件
- 在没有html文件的情况下使用dart:js库