ค้นหาเว็บไซต์

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());
    });