我正在尝试使用Jasmine来测试以下功能:
var Pdba = Class.create();
Pdba.prototype = {
getChangeGroup: function(userId) {
var query = 'active=true^u_change_group=true^u_organization=false^';
var exGroup = new CompanyGroup();
var groups = exGroup.getGroupsByQuery(userId, query); //want to spy/mock this call
if (groups.next()) {
return groups.sys_id.toString();
}
return '';
}
type: 'Pdba'
};
我希望SpyOn getGroupsByQuery()调用,以便它不会进行实际调用。以下是我一直在尝试的各种事情的集合,主要是为了看我是否可以"间谍"并看到它已被调用,然后处理覆盖,以便我可以用我自己的数据替换调用。
describe('my suite of getChangeGroup tests', function() {
var expPdba;
var validUserId = 'user1';
var expGrp;
var ggbqMoc
beforeEach(function() {
expPdba = new global.Pdba();
coGrp = new CompanyGroup();
spyOn(coGrp, 'getGroupsByQuery');
ggbqMoc = jasmine.createSpy('getGroupsByQuery');
});
it('should return \'\' for empty userId', function() {
coPdba.getChangeGroup('');
expect(coGrp.getGroupsByQuery).toHaveBeenCalled();
expect(ggbqMoc).toHaveBeenCalled();
});
});
这是可能的还是我需要更改测试中的功能才能获得' CompanyGroup'作为参数?
谢谢
答案 0 :(得分:0)
我假设您正在使用茉莉v3。现在,创建间谍的语法很奇怪-您必须传递一个字符串,该字符串引用您要为其创建间谍的变量的名称,然后传递一个应该被侦听的函数名称数组。
尝试一下:
describe('my suite of getChangeGroup tests', function() {
var expPdba;
var validUserId = 'user1';
var expGrp;
var spy;
beforeEach(function() {
expPdba = new global.Pdba();
coGrp = new CompanyGroup();
spy = jasmine.createSpyObj('coGrp', ['getGroupsByQuery'])
});
it('should return \'\' for empty userId', function() {
coPdba.getChangeGroup('');
expect(coGrp.getGroupsByQuery).toHaveBeenCalled();
expect(spy).toHaveBeenCalled();
});
});