【问题标题】:Failed toHaveBeenCalled() jest test in Vue componentVue 组件中的 toHaveBeenCalled() 玩笑测试失败
【发布时间】:2019-05-01 14:45:01
【问题描述】:

在测试中使用“点击”触发器无法正常调用函数。

  1. 我调用了函数 - 它正在工作
  2. 我触发了点击,但测试失败。

    describe("Message.test.js", () => {
        let wrapper;
        const createWrapper = propsData => mount(Message, { propsData 
    
        describe("Events", () => {
            beforeEach(() => {
             wrapper = createWrapper({ message: "Cat" });
        }); 
    
        //Working
        it("calls handleClick", () => {
            const spy = jest.spyOn(wrapper.vm, 'handleClick');
            wrapper.vm.handleClick();
            expect(spy).toHaveBeenCalled();
        });
    
        //NOT WORKING. WHY?
    
        it("calls handleClick when click on message", () => {
            wrapper.vm.handleClick = jest.fn();
            //It is Ok
            expect(wrapper.contains('.message')).toBe(true);
            // @click="handleClick" on element
            wrapper.find('.message').trigger('click');
            expect(wrapper.vm.handleClick).toHaveBeenCalledTimes(1);
        })
    });
    

我在函数中添加了console.log。在测试过程中,我看到调用了什么函数。

【问题讨论】:

    标签: javascript unit-testing vue.js jestjs


    【解决方案1】:

     it('calls handleClick when click on message', () => {
                const handleClick = jest.fn()
                wrapper.setMethods({ handleClick })
                const el = wrapper.find('.message').trigger('click')
                expect(handleClick).toBeCalled()
            })
    // stub
            it('triggers a message-clicked event when a handleClick method is called', () => {
                const stub = jest.fn()
                wrapper.vm.$on('message-clicked', stub)
                wrapper.vm.handleClick()
                expect(stub).toBeCalledWith('Cat')
            })

    【讨论】:

      猜你喜欢
      • 2020-10-08
      • 1970-01-01
      • 2018-02-13
      • 2020-02-06
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2020-10-08
      相关资源
      最近更新 更多