我正在编写一个jasmine单元测试来检查是否使用Parameter(它是一个Object)调用BackBone同步。
这是代码库
在我的收藏中,我有同步方法,即调用Back Bone sync
sync: function ( method, collection, options ) {
if ( !options ) {
options = {};
}
options.headers = {
“x-yz-webservice-client-id": “abcde"
};
return Backbone.sync( method, collection, options );
}
这里我想检查一下Backbone sync的options.headers是否设置为object { “x-yz-webservice-client-id":”abcde" };
我在茉莉花测试中尝试做什么,哪些不起作用如下:
var headers = {
“x-yz-webservice-client-id": “abcde"
};
var autoCompleteRecommendationsCollection = new AutoCompleteRecommendationsCollection({},opt);
spyOn( Backbone, 'sync' );
autoCompleteRecommendationsView.initialize( options );
expect(Backbone.sync).toHaveBeenCalledWith(jasmine.anything(), jasmine.anything(), jasmine.objectContaining(headers));
我想测试第三个参数,如上所述将属性设置为header。有没有更好的方法来检查这个论点?
答案 0 :(得分:0)
假设您使用的是Jasmine v2.x,另一种方法是:
expect(Backbone.sync.calls.mostRecent().args[2].headers)
.toEqual(jasmine.objectContaining({
“x-yz-webservice-client-id": “abcde"
}));
然而,您的代码似乎没有任何问题,您确认您的间谍实际上已被调用吗?由于您正在处理全局Backbone
变量,因此您需要确保测试中的规范和类共享相同的变量。