Это прямой вопрос, но я не могу найти ответ. Документация по Жасмин может быть улучшена. В первую очередь показаны примеры слежки за фиктивными данными и функциями, но я хочу протестировать написанную мной функцию. Иначе, что я на самом деле тестирую? Когда я работал с Pipes, я обнаружил, что это намного проще, так как все, что мне нужно сделать, это создать канал с новым ключевым словом. А потом утверждают, что он возвращает то, что я ожидаю. например,
const test = pipe.transform('8726324632');
expect(test).toEqual('872-632-4632');`
Однако с функциями, которые, кажется, не работают. Возьмите следующий код:
export function getKeyValueOfAttributesFromElement(el) {
const attributeMap = {};
Object.keys(el.attributes)
.forEach(key => {
attributeMap[el.attributes[key].nodeName] = el.attributes[key].value;
});
return attributeMap;
};
// Мой тест
import { getKeyValueOfAttributesFromElement } from './dom';
describe('getKeyValueOfAttributesFromElement', () => {
let mockData;
beforeEach(() => {
mockData = {
attributes: {
a: 'somestring',
b: 42,
c: false
}
};
});
it('should work', () => {
const myFunc = getKeyValueOfAttributesFromElement(mockData);
expect(myFunc).toHaveBeenCalled();
});
});
Вместо этого прохождения я получаю следующую ошибку в своем браузере expected a Spy, but got ({ undefined: undefined }).)
Если явызвать функцию с ключевым словом new
, которое я получаю Only a void function can be called with the 'new' keyword.
Что мне здесь не хватает? Как я могу вызвать свою функцию в моем тесте без необходимости ее создания?