Dispatcher 没有在开玩笑的单元测试中注册回调

Posted

技术标签:

【中文标题】Dispatcher 没有在开玩笑的单元测试中注册回调【英文标题】:Dispatcher is not registering callbacks in jest unit tests 【发布时间】:2016-03-03 12:36:59 【问题描述】:

非常类似于Dispatcher not registering callbacks in jest unit tests

我在真实商店中有 dispatcher.register。在我开玩笑的单元测试中,模拟调度程序没有注册任何回调。我在这里错过了什么吗?请告诉我..

describe(“Simple store tests",function()
    var actionTypes = require('../../constants/actionTypes');
    var AppDispatcher, simpleStore, callback;
//mock action
    var getProjects = actionType: actionTypes.actions.GET_PROJECTS;
//prepare
    AppDispatcher = require('../../dispatcher/AppDispatcher');
    simpleStore = require('../simpleStore');
    var simpleActions = require('../../actions/simpleActions');

//callback = AppDispatcher.register.mock.calls[0][0];       //this one fails

    it('should initialize with no projects in the list',function()
        var projects = simpleActions.getProjects();
        console.log(AppDispatcher.register.mock.calls.length); *//this comes back as zero*
    )

)

【问题讨论】:

【参考方案1】:

您是否告诉 Jest 不要模拟您正在测试的商店?此外,如果您在商店中使用 object-assign,您还应该告诉 jest 不要也嘲笑它。

在您的测试顶部添加这些行 - 在您第一次调用描述之前 - 希望可以解决问题:

jest.dontMock('../simpleStore');
jest.dontMock('object-assign'); // only if using object-assign

describe('simple store tests', function() 
    // rest of your code as before
);

【讨论】:

以上是关于Dispatcher 没有在开玩笑的单元测试中注册回调的主要内容,如果未能解决你的问题,请参考以下文章

开玩笑的单元测试不会等待 axios 响应

如果调用 super() 则开玩笑的单元测试

在开玩笑的单元测试角度显示正确的错误

createWriteStream 的 ('error') 上的开玩笑单元测试

React Native:在开玩笑的单元测试中更新上下文 api 值

开玩笑的带有 expo sqlite 调用的单元测试类