首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >proxyquire不阻塞方法调用

proxyquire不阻塞方法调用
EN

Stack Overflow用户
提问于 2016-09-19 21:14:55
回答 1查看 1.8K关注 0票数 0

我正在尝试使用proxyquire替换我正在测试的模块中的方法调用,但是尽管我已经设置了存根,它还是像调用方法一样调用方法。我做错了什么?

formsReducer.test.js:

代码语言:javascript
复制
import { expect } from 'chai';
import * as actions from '../actions/formsActions';
import * as types from '../constants/actionTypes';
import proxyquire from 'proxyquire';

describe('Forms Reducer', () => {
    describe('types.UPDATE_PRODUCT', () => {
        it('should get new form blueprints when the product changes', () => {
            //arrange
            const initialState = {
                blueprints: [
                    {
                        id: 1,
                        categoryId: 1,
                        identifier: null,
                        name: "Investment Policy Statement",
                        sortGroup: 1,
                        wetSignRequired: false
                    }
                ]
            };
            const testBlueprints = [{ id: 999, categoryId: 1, name: "Form Blueprint Loaded From Product ID 1", sortGroup: 1, wetSignRequired: false }];
            //use proxyquire to stub call to formsHelper.getFormsByProductId 
            let formsReducer = proxyquire.noCallThru().load('./formsReducer', {
              formsHelper: {
                getFormsByProductId: id => { return testBlueprints }
              }
            }).default;
            const action = {
                type: types.UPDATE_PRODUCT,
                product: {
                    id: 1,
                    accountTypeId: 1,
                    officeRangeId: 1,
                    additionalInfo: "",
                    enabled: true
                },
            };
            //act
            const newState = formsReducer(initialState, action);
            //assert
            expect(newState.blueprints).to.be.an('array');
            expect(newState.blueprints).to.equal(testBlueprints);
        }); 
    });
});

formsReducer.js:

代码语言:javascript
复制
import * as types from '../constants/actionTypes';
import objectAssign from 'object-assign';
import initialState from './initialState';
import formsHelper from '../utils/FormsHelper';
export default function formsReducer(state = initialState.forms, action) {
  switch (action.type) {
    case types.UPDATE_PRODUCT: {
        let formBlueprints = formsHelper.getFormsByProductId(action.product.id);
        formBlueprints = formsHelper.addOrRemoveMnDisclosure(formBlueprints, action.stateOfResidence.id);
        return objectAssign({}, state, {blueprints: formBlueprints, instances: []});
    }
}

如果通过formsHelper.getFormsByProductIdtestBlueprints进行适当的存根,那么它就不会返回testBlueprints。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-09-20 07:15:53

formsReducer.js正在导入../utils/FormsHelper,而proxyquire正在试图取代formsHelper。尝试将proxyquire更改为:

代码语言:javascript
复制
proxyquire.noCallThru().load('./formsReducer', {
  '../utils/FormsHelper': {
    getFormsByProductId: id => { return testBlueprints }
  }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39582217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档