返回未定义而不是数字的 Javascript 函数

标签 javascript ecmascript-6 jestjs

我有以下 JavaScript 函数,它是更大脚本的一部分:

const sub = 'L';

export function getFeedData (sub) {
    var feedId;
    switch (sub) {
        case '1': case '2': case '3': case '4': case '5': case '6': case 'S':
            feedId = 1;
            break;
        case 'A': case 'C': case 'E':
            feedId = 26;
            break;
        case 'N': case 'Q': case 'R': case 'W':
            feedId = 16;
            break;
        case 'B': case 'D': case 'F': case 'M':
            feedId = 21;
            break;
        case 'L':
            feedId = 2;
            break;
        case 'G':
            feedId = 31;
            break;
    }
    if (feedId === 2) {
        var feed = require('./MockData');
    }
    return {
        feed: feed,
        feedId: feedId
    };
}

我已经测试了这个脚本中的所有其他功能,它们都可以正常工作。对于此功能,这是我的测试(我正在使用 Jest,因为它是更大的 React 应用程序的一部分)。

import React from 'react';
import {getFeedData} from '../mocks/apiMock';

it('returns 2 as the feedId when L is sub parameter for getFeedData', () => {
    expect(getFeedData.feedId).toBe(2);
});

it('outputs feed from getFeedData', () => {
    expect(getFeedData.feed).toBeDefined;
}); 

这些测试中的后者正在通过 - 不确定为什么会这样。

第一个是我比较关心的。它返回 undefined 作为 getFeedData.feedId,因此失败。我是自学 JavaScript 的,我确信我在该函数中犯了一个愚蠢的错误,这就是 getFeedData.feedId 未定义的原因。如果有人能指出这个愚蠢的错误,我将不胜感激。

最佳答案

测试不是调用函数,而是尝试访问函数对象本身的 feedId 属性。

第二个测试通过,因为 getFeedData.feed 确实是 undefined。但这并不意味着这个测试用例是正确的。目的可能是调用该函数,其中的参数在开关中没有映射, 然后验证它的值是否未定义。

it('returns 2 as the feedId when L is sub parameter for getFeedData', () => {
    expect(getFeedData("L").feedId).toBe(2);
});

it('outputs feed from getFeedData', () => {
    expect(getFeedData("?").feed).toBeDefined;
}); 

关于返回未定义而不是数字的 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47480531/

相关文章:

javascript - 如何在 React with Jest(无 enzyme )中测试功能组件的状态

javascript - 工具提示样式? (朝正确的方向踢我)

javascript - jquery 动画 boxshadow

css - 如何在不使用任何对象 webpack sass loader 的情况下按原样使用 sass 类名?

javascript - undefined 不是函数(评估 '_this4.changeVisibilityFilterModal(true))

reactjs - redux-observable Promise 在单元测试中没有得到解决

javascript - react : this is null in event handler

javascript - 在 SVG 中居中 SVG

javascript - JS : enabling export/import on client side (ES6 or using babel)?

node.js - VSCode 新手 : Remote Jest/Node debugging through Docker