【问题标题】:Having trouble using Jest with external dependancies将 Jest 与外部依赖项一起使用时遇到问题
【发布时间】:2015-09-15 10:12:34
【问题描述】:

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

干杯

【问题讨论】:

    标签: unit-testing reactjs jwt flux jestjs


    【解决方案1】:

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

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

    到你的 package.json 文件

    【讨论】:

      猜你喜欢
      • 2014-06-01
      • 2021-09-22
      • 1970-01-01
      • 2013-03-20
      • 2021-07-15
      • 2013-06-19
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多