簡體   English   中英

Mocha測試未訪問全局變量

[英]Global Variables not being accessed by Mocha tests

我收到ReferenceError:未定義NC_SETTINGS。

"use strict";


import forOwn from 'lodash/object/forOwn';
import { assert, expect, should } from 'chai';
import { spy } from 'sinon';
import { applyMiddleware } from 'redux';
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import {
    REQUEST_ADD_PASSWORD_RESET_REQUEST,
    REQUEST_ADD_PASSWORD_RESET_REQUEST_SUCCESS,
    REQUEST_ADD_PASSWORD_RESET_REQUEST_FAILURE
} from 'actions/types';
import nock from 'nock';
import Actions from 'actions';
import fetch from 'isomorphic-fetch';

const middlewares = [ thunk ];
const mockStore = configureMockStore(middlewares);

var NC_SETTINGS = require('/home/tai/Gravitate/nc-app/taimoor/settings').NC_SETTINGS;
describe('forgot password async actions', () => {
    afterEach(()=> {
        nock.cleanAll();
    });

    //mockActions();
    //console.log(Actions.addPasswordResetRequest().addPasswordResetRequestAPI());
    it('should show a request for a password reset and that it succeeded ', (done) => {

        console.log(NC_SETTINGS);
        nock('http://localhost:8080/')
        .post('/password-reset-requests')
        .reply(200);
        var email = "test@email.com";
        const expectedActions= [
            {type: REQUEST_ADD_PASSWORD_RESET_REQUEST},
            {type: REQUEST_ADD_PASSWORD_RESET_REQUEST_SUCCESS}
        ];
        const store = mockStore({}, expectedActions, done);
        store.dispatch(Actions.addPasswordResetRequest());
        //unMockActions();
        //
        //console.log(actions);
        //expect(actions.addPasswordResetRequest("email")).to.equal(expectedAction);

  });

});

因此,當我console.log NC_SETTINGS時,它確實顯示。 但是,當我運行store.dispatch(Actions.addPasswordResetRequest)時,得到的NC_SETTINGS未定義。 我認為導入NC_SETTINGS可能可行的原因是因為它可以導入同構提取,所以我遇到了類似的問題。

有沒有一種方法可以將全局變量導入MochaJ,以便我的操作可以訪問NC_SETTINGS?

我應該提到store.dispatch(Actions.addPasswordResetRequest())鏈接到動作文件,該動作文件分派到js文件中的api調用。 該js文件位於末尾,是NC_SETTINGS所在的位置,以及正在調用錯誤的位置。 在瀏覽器中,這可以正常工作。

有沒有一種方法可以獲取全局變量列表並在Mocha中進行測試時添加它們?

不要這樣做,但是您可以使用:

global.NC_SETTINGS = ...

將其設置為nodejs全局變量。 這應該在Actions

但是,由於許多很多原因,您要避免使用全局變量。 相反,您可能想進行某種依賴注入。 兩種可能性是:

  1. Actions實現為一個類,並在將NC_SETTINGS用作構造參數的地方實例化它。
  2. 使用重新接線模塊。 在這種情況下,NC_SETTINGS可以是Actions模塊中的頂級變量,而不是全局變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM