我有一个名为addToShoppingList
的函数,其作用是将用户输入的产品添加到购物清单中(当前只是一个数组)。我正在使用Jest进行测试,以检查我的功能是否正常运行,但是当前卡住了:
index.js
const fetchData = async (product,numOfProducts) => {
const res = await fetch( ... );
const data = await res.json();
return data;
};
// user input for products looks like 'butter 2'
// selecting Breaskstone's butter (from mockData below)
const addToShoppingList = async (product,numOfProducts = 10,getProducts = fetchData) => {
const shoppingList = [];
const item = product.slice(0,-2); // i.g. 'butter'
const i = +product.split(' ').pop() - 1; // i.g. '2' which becomes 1,the index number in array
const data = await getProducts(item,numOfProducts);
// i,which is the index,is used to grab specific item from list of products
let products = data.items[i].productInfo.name;
let manufacturers = data.items[i].productInfo.manufacturer;
const chosenItem = `${products} from ${manufacturer}`
shoppingList.push(chosenItem);
return shoppingList;
};
这不是很好的代码,但是我正在尝试学习如何为上述功能编写测试-我目前正在使用Jest并将其记录下来,但是一直收到错误消息(我已经正在谷歌搜索并尝试修复)。很想从单元测试专家那里获得关于我做错了什么的提示:
index.test.js
const mockData = {
items: [
{
productInfo: {
name: 'Butter',manufacturer: 'Land O Lakes'
},},{
productInfo: {
name: 'Butter',manufacturer: 'Breakstone'
},manufacturer: 'Kerrygold',}
]
};
describe('addToShoppingList',() => {
const mockProducts = jest.fn();
mockGetBooks.mockReturnValue(mockData);
it('should call fetch with correct arguments',async () => {
await addToShoppingList('product 1','numOfResults',mockProducts);
expect(mockProducts).toBeCalledWith('product 1','numOfResults');
});
});
我想使用上面创建的addToShoppingList
测试我的mockData
函数是否正常工作。