reactjs - วิธีตรวจสอบว่าวิธีการไม่ได้ถูกเรียกใช้บนม็อกที่ส่งเป็นพร็อพ
ฉันกำลังพัฒนาแอปพลิเคชัน React พร้อมกับ jest และ TypeMoq
ฉันไม่สามารถทดสอบเส้นทางเชิงลบของต้นไม้การตัดสินใจได้เมื่อการเรียกที่จำลองขึ้นเป็นวิธีการในอ็อบเจ็กต์ซึ่งจำเป็นต้องไม่ถูกกำหนด มีวิธีการใดใน TypeMoq ที่สามารถช่วยฉันยืนยันได้ว่าฟังก์ชันที่ให้มานั้นไม่ได้ถูกเรียกใช้งานหรือไม่?
type TopicComponentProps = {
topic: Topic
history?: History<any>
}
export const TopicComponent = ({topic, history} : TopicComponentProps) => {
const { Id, Name } = topic;
const filterTopic = () => {
if (history) { // <-- this is my problem
history.push(`/topic/overview/${Id}`);
}
}
return(
<Fragment>
<span
style={topicStyle}
onClick={() => filterTopic()}
className="topic">
{Name}
</span>
</Fragment>
)
}
ตัวอย่างการทดสอบที่เป็นบวกมีลักษณะดังนี้:
it('should trigger the navigation when clicked', () => {
const mockHistory = Mock.ofType<History<any>>();
const wrapper = mount(
<TopicComponent topic={testTopic} history={mockHistory.object} />
);
wrapper.simulate('click');
mockHistory.verify(x => x.push(It.isAnyString()), Times.once());
});
ฉันจะตั้งค่าอ็อบเจ็กต์จำลองอย่างไร เพื่อที่ฉันจะสามารถทดสอบได้ว่าจะไม่มีการนำทางเกิดขึ้นเมื่อไม่มีการให้ประวัติ
it('should not trigger the navigation when history is undefined', () => {
let mockHistory = Mock.ofType<History<any>>();
???
const wrapper = mount(
<TopicComponent topic={testTopic} history={???} />
);
wrapper.simulate('click');
mockHistory.verify(x => x.push(It.isAnyString()), Times.never());
});