单元测试-在使用具有外部依赖关系的Jest时遇到问题



我正在尝试使用Jest用Flux代码测试React。我对单元测试相当陌生。

我觉得我在嘲笑我的依赖方面做得不对(说实话,嘲笑的事情有点让我困惑)。

以下是我遇到的问题:

//LoginStore-test.js
jest.dontMock('../../constants/LoginConstants');
jest.dontMock('jsonwebtoken');
jest.dontMock('underscore');
jest.dontMock('../LoginStore');
describe("login Store", function(){
    var LoginConstants = require('../../constants/LoginConstants');
    var AppDispatcher;
    var LoginStore;
    var callback;
    var jwt = require('jsonwebtoken');
    var _user = {
        email: 'test@test.com'
    };
    //mock actions                                                                                                                                                                                                                            
    var actionLogin = {
        actionType: LoginConstants.LOGIN_USER,
        'jwt': jwt.sign(_user, 'shhh', { expiresInMinutes: 60*5 })
    };
    beforeEach(function(){
        AppDispatcher = require('../../dispatchers/AppDispatcher');
        LoginStore = require('../LoginStore');
        callback = AppDispatcher.register.mock.calls[0][0];
    });
    ...
    it('should save the user', function(){
        callback(actionLogin);
        var user = LoginStore.getUser();
        expect(user).toEqual(_user);
    });
});

});

LoginStore.js文件:

var AppDispatcher = require('../dispatchers/AppDispatcher');
var BaseStore = require('./BaseStore');
var LoginConstants = require('../constants/LoginConstants.js');
var _ = require('underscore');
var jwt = require('jsonwebtoken');
//initiate some variables                                                                                                                                                                                                                     
var _user;
var _jwt;
var LoginStore = _.extend({}, BaseStore, {
    getUser: function(){
    return _user;
    }
});
AppDispatcher.register(function(action){
    switch(action.actionType){
    case LoginConstants.LOGIN_USER:
        //set the user                                                                                                                                                                                                                        
        _user = jwt.decode(action.jwt);
        //save the token                                                                                                                                                                                                                      
        _jwt = action.jwt;
    break;
    //do nothing with the default                                                                                                                                                                                                         
    default:
        return true;
    }
    LoginStore.emitChange();
    return true;
});
module.exports = LoginStore;

jsonwebtoken功能似乎根本不起作用。如果我记录actionLogin.jwt,它只返回undefined。知道我在这里做错了什么吗?

干杯

经过一番搜索,并试图找出不同的问题,我找到了答案。只需添加

"jest": {"modulePathIgnorePatterns": ["/node_modules/"]}

到您的package.json文件

相关内容

  • 没有找到相关文章

最新更新