У меня есть следующая функция 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
свойству 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;
});