gpt4 book ai didi

javascript - 调度程序未在 Jest 单元测试中注册回调

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:35 24 4
gpt4 key购买 nike

我正在为 react+flux 应用程序中的商店编写单元测试。我遵循了设置模拟调度程序的示例 here ,我的单元测试如下所示:

jest.dontMock "../../app/scripts/stores/item_store.coffee"
jest.dontMock "object-assign"

describe 'ItemStore', ->
ShopConstants = require "../../app/scripts/constants/shop_constants.coffee"
ShopDispatcher = undefined
ItemStore = undefined
callback = undefined

actionBuildQueryString =
source: "VIEW_ACTION"
action:
type: ShopConstants.ActionTypes.BUILD_QUERY_STRING
size: "4"

actionReceiveFilterRespData =
source: "SERVER_ACTION"
action:
type: ShopConstants.ActionTypes.RECEIVE_FILTER_RESP_DATA
data: {item: {} }

beforeEach ->
ShopConstants = require "../../app/scripts/constants/shop_constants.coffee"
ShopDispatcher = require "../../app/scripts/dispatchers/shop_dispatcher.coffee"
ItemStore = require "../../app/scripts/stores/item_store.coffee"
callback = ShopDispatcher.register.mock.calls[0][0]

it "registers a callback with the dispatcher", ->
expect(ShopDispatcher.register.mock.calls.length).toBe(1)

在我的 item_store.coffee 文件中,我这样向调度员注册:

ShopDispatcher.register (payload) ->
action = payload.action

switch action.type

when ActionTypes.BUILD_QUERY_STRING
WebApiUtils.fetchItems(payload)

when ActionTypes.RECEIVE_FILTER_RESP_DATA
_setItems(action.data)

ItemStore.emitChange()

我希望模拟的 Dispatcher 注册回调,因为这发生在实际的 item_store 文件中,我已经告诉 jest 不要模拟。然而,由于 ShopDispatcher.register 是未定义的,它没有被注册,但我不太清楚为什么。感谢您的帮助。

最佳答案

我也遇到了同样的问题。不要使用 ShopDispatcher.register.mock.calls[0][0] 尝试使用 ShopDispatcher.dispatch。下面的代码非常适合我(使用类型脚本)。

beforeEach(function () {   
dispatcher = require("../../../src/App/Dispatcher");
localeStore = require("../../../src/stores/localestore");
localeAction = require("../../../src/actions/Locale/LocaleAction");
}

it("should translate the element with the value in current locale JSON", function () {
localeChangeAction = new localeAction(true, locale, localeJson);
dispatcher.dispatch(localeChangeAction);

var translatedText = localeStore.instance.TranslateText("login.login-header");
expect(translatedText).toEqual("Login header");
});

关于javascript - 调度程序未在 Jest 单元测试中注册回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27871967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com