嵌套对象上的茉莉花间谍

Ami*_*ava 9 javascript unit-testing jasmine

我的服务对象如下所示:

var appService = {
 serviceOne: {
   get: function(){}
 },
 serviceTwo: {
  query: function(){}
 }
}
Run Code Online (Sandbox Code Playgroud)

我想模拟appService,例如:

expect(appService.serviceTwo.query).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

Ami*_*ava 13

好的,我得到了这个:

appService: {
  serviceOne: jasmine.createSpyObj('serviceOne', ['get']),
  serviceTwo: jasmine.createSpyObj('serviceTwo', ['query'])
}
Run Code Online (Sandbox Code Playgroud)

我希望这是正确的方法.


And*_*rle 6

只需用茉莉花间谍替换这个功能:

var appService = {
  serviceOne: {
    get: jasmine.createSpy()
  },
  serviceTwo: {
    query: jasmine.createSpy()
  }
}
Run Code Online (Sandbox Code Playgroud)

稍后的:

expect(appService.serviceTwo.query).toHaveBeenCalled()
Run Code Online (Sandbox Code Playgroud)