我有以下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未定义的原因。如果有人能指出这个愚蠢的错误,我会非常感激。
答案 0 :(得分:1)
测试不是调用函数,而是尝试访问函数对象本身的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;
});