我有以下 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/