2014-06-20 2 views
0

기본 MEAN 스택을 사용하고 인증 프로세스에 패스포트를 사용하여 로그인 프로세스를 구축했습니다.NodeJS/Passport - mocha 및 superagent로 사용자 로그인 테스트

로그인 프로세스가 작동하는지 테스트하도록 설정하려고합니다. 나는 다음과 같은 오류가

it ('login', function(done) { 
    agent.post(config.web.vhost + '/login') 
     .send({ email: '[email protected]', password: 'batman' }) 
     .end(function(err, res) { 
     if (err) console.log('error' + err.message); 

     res.should.have.status(200); 

     done(); 
     }); 
    }); 

:

오류 이메일 : [email protected] - 안돼 오류 errorsocket가 두 배 을 끊지 않습니다 여기에 로그인 부분을하는 것은 내가 사용하는 코드입니다 콜백!

1 passing (2s) 
    1 failing 

    1) User login: 
    Uncaught TypeError: Cannot read property 'should' of undefined 

나는 나의 경로와 자격 증명을 잘 알고 있지만 여기에 작동하지 뭐죠 알아낼 기운 다. 이것은 사용자 테스트의 첫 걸음입니다. 그래서 나는 아마 뭔가 옳은 것을 얻지 못할 것입니다. 여기

가 내 테스트의 나머지 부분이다 : 나는 당신이보고있는 실패가 connect ECONNREFUSED 것을 알 수

var should = require("should"); 
var mongoose = require('mongoose'); 
var request = require('superagent'); 
var agent = request.agent(); 

var config = require("../settings/conf"); 
var dbUrl = require("../config/database.js"); 
var User = require('../server/models/user'); 

var db; 

describe('User', function() { 

before(function(done) { 
    db = mongoose.connect(dbUrl.url); 
    done(); 
    }); 

    after(function(done) { 
    mongoose.connection.close() 
    done(); 
    }); 

    beforeEach(function(done) { 
    var user = new User({ 
     email: '[email protected]', 
     password: 'batman', 
     firstName: 'Bruce', 
     lastName: 'Wayne' 
    }); 

    user.save(function(err, user) { 
     if (err) console.log('error' + err.message); 
     else console.log('no error'); 

     done(); 
    }); 
    }); 

    it('find a user by username', function(done) { 
    User.findOne({ email: '[email protected]' }, function(err, user) { 
     user.email.should.eql('[email protected]'); 
     console.log(" email: ", user.email) 
     done(); 
    }); 
    }); 

    it ('login', function(done) { 
    agent.post(config.web.vhost + '/login') 
     .send({ email: '[email protected]', password: 'batman' }) 
     .end(function(err, res) { 
     if (err) console.log('error' + err.message); 

     res.should.have.status(200); 

     done(); 
     }); 
    }); 

    afterEach(function(done) { 
    User.remove({ email: '[email protected]' }, function() { 
     done(); 
    }); 
    }); 
}); 

답변

0

- 그래서 여권에 대해 아무것도 아니다, 그것은 당신이 성공적으로 연결하지 않는 단지의 당신의 서버를 agent.post에 입력하십시오.

config.web.vhost 값이 올바르게 설정되어 있지 않거나, 어떤 superagent가 찾고자하는 것이 올바른 형식이 아닌 것 같습니다 (예 : superagent는 'http : // '를 앞에두고 vhost 값은 호스트 이름 일 수 있습니다).

+0

이 문제가 해결되었지만 여전히 오류가 발생합니다. 내 게시물의 오류 메시지를 업데이트했습니다. 왜 내가 "이중 콜백"메시지를 얻는 지 아십니까? – Spearfisher

관련 문제