加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

测试 – 如何测试使用’redux-api-middleware’和[CALL_API]的re

发布时间:2020-12-15 20:31:26 所属栏目:百科 来源:网络整理
导读:我有一个名为addItemsToCollection的动作,它会触发对API的调用,如下所示: import {CALL_API} from 'redux-api-middleware';export function addItemsToCollection(collectionId,itemIds){ return {[CALL_API]: { endpoint: `/collections/${collectionId}/i
我有一个名为addItemsToCollection的动作,它会触发对API的调用,如下所示:

import {CALL_API} from 'redux-api-middleware';

export function addItemsToCollection(collectionId,itemIds)
{
  return {[CALL_API]:
  {
      endpoint: `/collections/${collectionId}/items`,method: 'POST',body: JSON.stringify(itemIds),types:
      [
        ADD_ITEMS,{ type: ADD_ITEMS_SUCCESS },ADD_ITEMS_FAIL
      ]
    }
  };
}

当我尝试编写一个测试时,只是为了创建这个动作,例如:

it('should create an action to add items to a collection',() =>
{
  const collectionId = 1;
  const itemIds = [1,2,3];

  const expectedAction =
  {
    [CALL_API]:
    {
      endpoint: `/collections/${collectionId}/items`,ADD_ITEMS_FAIL
      ]
    }
  };

  expect(addItemsToCollection(collectionId,itemIds)).toEqual(expectedAction);
});

它确实通过了,但这是因为它正在为expectedAction返回并返回空对象{}以及从动作创建器函数返回.没多大用处.

所以我的问题是,

为什么要返回空对象?

进行此测试的正确方法是什么?

解决方法

CALL_API是一个符号.将对象传递给console.log时,它们不会显示.如果要查看对象中的键,可以执行Object.getOwnPropertySymbols(expectedAction),也可以使用console.log(expectedAction [CALL_API]),然后获取该对象. ( http://exploringjs.com/es6/ch_symbols.html)

您正在测试它.如果您要使用空对象,则不匹配.如果使用具有不同符号的对象,则它将不匹配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读