[英]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
。
但是,由於許多很多原因,您要避免使用全局變量。 相反,您可能想進行某種依賴注入。 兩種可能性是:
Actions
實現為一個類,並在將NC_SETTINGS
用作構造參數的地方實例化它。 Actions
模塊中的頂級變量,而不是全局變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.