【问题标题】:Jasmine spyOn function call inside function under testJasmine spyOn 函数调用内部被测函数
【发布时间】:2017-02-16 16:06:51
【问题描述】:

我正在尝试使用 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'
};

我想监视 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”作为参数?

谢谢

【问题讨论】:

    标签: jasmine


    【解决方案1】:

    我假设您使用的是 jasmine 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();
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 2016-05-12
      相关资源
      最近更新 更多