我正在为我的vue应用程序编写单元测试,因为在beforeCreate方法中调用了session.exists函数,所以我遇到了问题。那我怎么能模拟生命周期函数或vue。$ session.exists。我试图用sinon嘲笑它,但我没有设法完成它?
代码:
beforeCreate: function() {
if (!this.$session.exists()) {
this.$router.push('/')
}
}
错误信息是:
TypeError:"无法读取属性'存在'未定义"
答案 0 :(得分:0)
您可以在operator=()
:
$session
mount()
演示如下。
const $session = { exists() { return true; } };
const component = mount(MyComponent, {
mocks: {
$session
}
});

var MyComponent = Vue.component('MyComponent', {
template: '<div> Hello </div>',
beforeCreate() { console.log('this.$session.exists() -->', this.$session.exists()); },
});
// specs code ///////////////////////////////////////////////////////////
var mount = vueTestUtils.mount;
describe('MyComponent', () => {
it("mocks $session successfully", () => {
const $session = { exists() { return true; } }
const parent = mount(MyComponent, {
mocks: {
$session
}
});
expect(parent.vm.$session).not.toBe(undefined);
});
});
// load jasmine htmlReporter
(function() {
var env = jasmine.getEnv()
env.addReporter(new jasmine.HtmlReporter())
env.execute()
}())
&#13;