我正在使用karma-jasmine和browserify来测试Vue组件。一种方法在加载事件上监听图像。但是在事件处理程序中调用的间谍没有得到正确的结果。以下片段显示错误:
let spy = jasmine.createSpy('spy')
spy.and.returnValues({
name: 'name'
})
describe('example tests', () => {
it('should pass', (done) => {
var img = new Image()
img.onload = function() {
console.log('2', spy())
done()
}
img.src = "http://dummyimage.com/100x100"
console.log('1', spy())
})
})
这里我们是,在位置1,日志显示1,但在位置2,日志显示未定义。
答案 0 :(得分:1)
您链接到间谍的.and.returnValues
函数只返回指定一次的对象all subsequent calls to the spy will return undefined。
如果您要执行以下操作:
let spy = jasmine.createSpy('spy')
spy.and.returnValues({
name: 'name'},
{name: 'name2'}
)
describe('example tests', () => {
it('should pass', (done) => {
var img = new Image()
img.onload = function() {
console.log('2', spy())
done()
}
img.src = "http://dummyimage.com/100x100"
console.log('1', spy())
})
})
您会发现控制台将记录“1 Object {name:”name“}”,然后记录2 Object {name:“name2”}。
如果您希望间谍始终返回相同的对象,则需要使用.and.returnValue
而不是.and.returnValues
:
let spy = jasmine.createSpy('spy')
spy.and.returnValue({
name: 'name'})
describe('example tests', () => {
it('should pass', (done) => {
var img = new Image()
img.onload = function() {
console.log('2', spy())
done()
}
img.src = "http://dummyimage.com/100x100"
console.log('1', spy())
})
})