2012-06-19 29 views
8

我试图调试窥视jQuery.post不点火,这样一个全面的检查,我想茉莉间谍为什么不认为它被称为即使它返回和返回值?

spyOn(this.viewModel.requests, 'submitRequest').andReturn('fooz'); 

var ret = this.viewModel.requests.submitRequest(); 
expect(ret).toEqual('foo'); 

expect(this.viewModel.requests.submitRequest).toHaveBeenCalled(); 

这种失败

预计“福兹”平等“富”。

但是,当我在参数改变'fooz''foo'andReturn,测试失败与submitRequest

预计间谍已被调用。

间谍正在返回罐装值,那么为什么toHaveBeenCalled失败?

+0

你茉莉花的版本是? – Dancrumb

+0

@Dancrumb 1.2.0-rc3 –

回答

1

我知道这不应该是解决方案,但你尝试过

var submitSpy = spyOn(this.viewModel.requests, 'submitRequest').andReturn('foo'); 

var ret = this.viewModel.requests.submitRequest(); 
expect(ret).toEqual('foo'); 

expect(submitSpy).toHaveBeenCalled(); 

因为有时候这工作更稳定

+0

感谢您的建议,但是这个测试也失败了:“期待间谍submitRequest被调用。” –

+0

@GregBacon您是否尝试过使用console.log(submitSpy)?你会得到什么?这真的很奇怪,你在使用什么框架?Backbone? –

1

你的代码应该工作。我已经测试过它的茉莉独立的例子:

it("tells the current song if the user has made it a favorite", function() { 
    spyOn(song, 'persistFavoriteStatus').andReturn('foo'); 
    var ret = song.persistFavoriteStatus(); 
    expect(ret).toEqual('foo'); 

    expect(song.persistFavoriteStatus).toHaveBeenCalled(); 
}); 

我的直觉告诉我,你所遇到的问题与之前茉莉花的范围有关/来电之后 - 我碰到令人沮丧的情况下,像我自己。在测试开始时,我会检查以确保环境符合您的预期(例如,间谍会被重置)。

相关问题