zoukankan      html  css  js  c++  java
  • NodeJs学习笔记(五)---单元测试补充

        今天早上继续研究Mocha,忽然发现一个问题,我的大部分程序都是需要登录验证的,所以需要预先登录之后才能进行下一步测试,就开始在网上找答案,发现没有这种资料,很疑惑,最后发现其实是自己太笨了,因为这个问题在Node中太简单了,解决方案如下

         修改bootstrap.test.js,如下

    var Sails = require('sails'),
    sails;
    var request = require('supertest');
    var port = 1447; //测试启动端口
    agent = request.agent('http://localhost:'+port); //服务器连接,全局变量
    
    before(function (done) {
    	Sails.lift({
    		log : {
    			level : 'error'
    		},
    		port:port
    	}, function (err, server) {
    		sails = server;
    		if (err) {
    			return done(err);
    		} else {//登录
    			agent.get('/user/login?login_code=18875282207&user_password=111111')
    			.end(function (err, res) {
    				if (err)
    					return done(err);
    
    				done(err, sails);
    			});
    		}
    	});
    });
    
    after(function (done) {
    	var done_called = false;
    	Sails.lower(function () {
    		if (!done_called) {
    			done_called = true;
    			setTimeout(function () {
    				sails.log.debug("inside app.lower, callback not called yet. calling.");
    				done();
    			}, 1000);
    
    		} else {
    			sails.log.debug("inside app.lower, callback already called.");
    		}
    	});
    });
    

      增加了全局变量agent = request.agent('http://localhost:'+port),这个变量可以在以后发起请求,同时启动sailsjs之后,直接登录,以后测试controllers时,就只需要调用agent.get()或者agent.post()就可以了,前面的controller测试UserController.test.js修改如下:

          

    var should = require('should');
    
    describe('UsersController', function () {
    
    	describe('#session()', function () {
    		it('should get true', function (done) {
    			agent.get('/user/test')
    			.end(function (err, results) {
    				should(results.res.body.authenticated).be.exactly(true);
    				done();
    			});
    		});
    	});
    });
    

      其中/user/test的返回值格式为{authenticated: true},如果已经登录则返回true,否则返回false。 

        运行npm test,结果如下

    1 passing (8s)

         很简单就解决了,记录下来备忘吧。

  • 相关阅读:
    路由的路径模式
    使用source命令解决mysql导入乱码问题
    【转载】如何学习C++
    【Computer Vision】图像单应性变换/投影/仿射/透视
    【Paper Reading】Bayesian Face Sketch Synthesis
    【数据挖掘】相似性和相异性度量
    【C++】函数和指针
    【Paper Reading】Object Recognition from Scale-Invariant Features
    【Paper Reading】Improved Textured Networks: Maximizing quality and diversity in Feed-Forward Stylization and Texture Synthesis
    【数据挖掘】特征选择和降维
  • 原文地址:https://www.cnblogs.com/stone-fly/p/4535792.html
Copyright © 2011-2022 走看看