[英][unit testing]: how can I get updated props after a click event that has a mock axios call
码
let basicProps = {
inCart: false,
quantity: 0,
min: 1,
max: 10,
productData: mockProductData
};
const mockData = {
inCart: true,
quantity: 1,
min: 1
};
const mockOnAddToCart = jest.fn(async (data, props) => {
const newProps = await mockAxios(data).post()
const updatedProps = { ...props, newProps };
return updatedProps;
});
test('if clicking the "ADD" button, renders the "increment" button',() => {
let newProps;
async function onClickEvent () {
newProps = await mockOnAddToCart();
};
const { getByText, rerender } = render(
<CTAWrapper
{...basicProps}
onAddToCart={onClickEvent}
/>
);
// CLICK ADD BUTTON
fireEvent.click(getByText('Add'));
console.log({...newProps}); // log - {}
// RE-RENDER PRODUCT CARD COUNTER
// rerender(<CTAWrapper {...newProps}/>);
// TEST IF THE INCREMENT BUTTON IS THERE
// expect(getByText('+')).toBeInTheDocument();
});
__mocks __ / axios.js
export default function(data) {
return {
get: jest.fn(() => Promise.resolve(data)),
post: jest.fn(() => Promise.resolve(data))
};
}
问题
该代码似乎无法正常工作。 据我所知,这是因为当我火的onClick事件,它运行onClickEvent
异步方式,这将更新的价值newProps
它被记录到控制台后。 需要newProps
的值来重新呈现组件以进行进一步的声明测试。
目的
onclick
函数 onclick
函数应进行模拟 axios
调用 axios
调用应返回一个承诺 axios
函数的数据 堆
任何帮助深表感谢。
查看组件的代码将很有用。 通过测试判断问题是更新CTAWrapper
的逻辑存在于其父组件中。 如果在执行异步代码后呈现该组件,则DOM应该相应地更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.