我如何使用sinon在Vue中间谍或模拟方法?

时间:2017-04-25 07:25:01

标签: vue.js vuejs2

我正在尝试使用webpack模板为我的应用创建基于Vue和vue-cli的单元测试。

我阅读了Vue文档,vue-loader,vue-cli和vue-template / webpack(更多!)。当我尝试对我的组件进行单元测试时,我会使用它。

const Constructor = Vue.extend(MovieList)
vm = new Constructor({
    propsData: {
        criteria
    },
    methods: {
        fetch: sandbox.spy()
    }
}).$mount()

测试一下:

expect(vm.fetch).to.be.called

但是我收到了这个错误:

  

✗应该被称为fetch

     

TypeError:{[Function:boundFn] _length:0}不是间谍或对间谍的调用!   在assertCanWorkWith(/home/jmanuelrosa/Developer/personales/vue-course/movues/node_modules/sinon-chai/lib/sinon-chai.js:43:19)   在Assertion。 (/home/jmanuelrosa/Developer/personales/vue-course/movues/node_modules/sinon-chai/lib/sinon-chai.js:70:13)   在Assertion.addProperty(/home/jmanuelrosa/Developer/personales/vue-course/movues/node_modules/chai/chai.js:4240:29)   在上下文。 (webpack:///test/unit/specs/MovieList.spec.js:74:39< - index.js:14910:39)

1 个答案:

答案 0 :(得分:1)

从未与sinon合作,但医生说:

sinon.spy(vm, "fetch");
expect(vm.fetch).toHaveBeenCalled();

http://sinonjs.org/releases/v2.1.0/spies/

您是否在创建组件时调用fetch?有时您需要手动触发方法。