使用jasmine.createSpyObj实用程序构建SpyObj时声明getter属性?

时间:2018-03-06 16:22:47

标签: testing jasmine

我们说我有一个班级:

$("#modal-btn-register-request").click(function(event) {
    event.preventDefault();
    jQuery('#w3').yiiActiveForm().submit();    
});

测试时,我希望实现此功能:

class MyRealClass {
  get propOne() { return stuffFromTheServer; }
}

做这样的事......

const mockClass = {
  get propOne() { return someStuff; }
}

jasmine.spyOnProperty(mockClass, 'propOne', 'get');

换句话说,我想使用const spy = jasmine.createSpyObj('mockClass', [ {methodName: 'propOne', accessType: 'get'} ]); 构建一个SpyObj<MyRealClass>,并将getter属性声明为jasmine.createSpyObj数组中的方法(第二个参数为methodName方法

这可能吗?

2 个答案:

答案 0 :(得分:0)

通过此代码,我做到了惊人的简单:

const routerMock = jasmine.createSpyObj(['events']);
routerMock.events = of(new NavigationEnd(0, 'url1', 'url2'));

const serviceToTest = new SomeService(routerMock);

答案 1 :(得分:0)

createSpyObj 接受一个可选的最后一个参数,用于声明属性:

const spy = jasmine.createSpyObj(['here', 'be', 'methods'], { propOne: 'someStuff' });

const spy = jasmine.createSpyObj('mockClass', ['here', 'be', 'methods'], { propOne: 'someStuff' });

有关官方文档,请参阅 herehere