Javascript jest测试-类型错误:无法读取属性';过滤器';空的
我对jest测试非常陌生,我很难理解jest是如何处理我要测试的函数的。我的问题是: 我正在尝试测试以下非常简单的函数,它将接收一个bookId,并在一个包含这样一个id的数组中找到对象Javascript jest测试-类型错误:无法读取属性';过滤器';空的,javascript,jestjs,Javascript,Jestjs,我对jest测试非常陌生,我很难理解jest是如何处理我要测试的函数的。我的问题是: 我正在尝试测试以下非常简单的函数,它将接收一个bookId,并在一个包含这样一个id的数组中找到对象 function catchSelectedBook(bookId) { const objectSearchAsString = localStorage.getItem('objecttransfer'); const booksObject = JSON.parse(objectSearchAsS
function catchSelectedBook(bookId) {
const objectSearchAsString = localStorage.getItem('objecttransfer');
const booksObject = JSON.parse(objectSearchAsString);
const currentBook = booksObject.filter((book) => book.id === bookId);
return currentBook;
}
单元测试Jest代码如下所示:
describe('Given a function that is given as argument the id', () => {
test('When invoked, it finds the book that matches such id', () => {
const returnMokObject = {
kind: 'books#volumes',
totalItems: 1080,
items: [
{
kind: 'books#volume',
id: 'HN1dzQEACAAJ',
}],
};
mockLocalstorageJest();
const answer = catchSelectedBook('HN1dzQEACAAJ');
expect(answer.id).toBe('HN1dzQEACAAJ');
});
});
函数mockLocalstorageJest向本地存储器发送一个对象,以便在测试函数catchSelectedBook时获取该对象
我像这样导出我的函数:
module.exports = {
catchSelectedBook,mockLocalstorageJest,
};
const { catchSelectedBook, mockLocalstorageJest} = require('./book-details.js');
我将函数导入测试文件,如下所示:
module.exports = {
catchSelectedBook,mockLocalstorageJest,
};
const { catchSelectedBook, mockLocalstorageJest} = require('./book-details.js');
无论何时运行测试,我都会收到以下错误消息:
这是否意味着Jest没有定义数组方法“filter”
谢谢 我认为该指令返回null
const objectSearchAsString = localStorage.getItem('objecttransfer');
JSON.parse(null)
返回null,因此bookObject
也为null
我相信您的问题在于您没有在
mockLocalstorageJest()
中正确设置本地存储。这意味着localStorage.getItem('objecttransfer')
不存在,因此它返回null
。您完全正确。该函数向本地存储器发送的是一个对象,而不是catchSelectedBook使用的数组。谢谢不用担心@Pablo,欢迎来到Stack Overflow。请注意,在这里说“谢谢”的首选方式是投票表决好的问题和有用的答案(一旦你有足够的声誉这么做),并通过点击复选标记(这也会给你的声誉带来一点提升)来回答你提出的任何问题。请参阅本页,并