Функция Javascript, возвращающая неопределенное число вместо числа

1

У меня есть следующая функция 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 не определен. Если кто-то может указать на эту глупую ошибку, я бы очень признателен ей.

Теги:
ecmascript-6
jestjs

1 ответ

1
Лучший ответ

Тесты не вызывают функцию, но пытаются получить доступ 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;
}); 
  • 0
    Это действительно фиксирует мои результаты теста, спасибо за объяснение. К сожалению, я теперь не уверен, почему весь сценарий имеет неожиданный вывод. Я думаю, мне нужно немного попрактиковаться в прицелах и замыканиях. Но это вопрос в другой раз.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню