在外部依赖项中使用Jest时遇到问题

时间:2015-06-29 03:34:10

标签: unit-testing reactjs jwt flux jestjs

我正在尝试使用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。知道我在这里做错了吗?

干杯

1 个答案:

答案 0 :(得分:1)

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

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

到你的package.json文件