Jasmine有createSpy()返回模拟对象

rit*_*ter 18 javascript unit-testing express jasmine

我正在尝试模拟一个响应对象,它看起来像这样:

var res = {
  status: jasmine.createSpy().andReturn(this),
  send: jasmine.createSpy().andReturn(this)
}
Run Code Online (Sandbox Code Playgroud)

这将返回jasmine对象.我真的想要返回包含模拟函数的原始res变量.那可能吗?我主要是将这个实现到包含res.status().send()的单元测试函数,这被证明是困难的.

rit*_*ter 28

这里的答案实际上非常快.调用andReturn()会将茉莉花作为'this'.但是,如果你编写andCallFake(),那么该函数会将模拟对象视为此.解决方案如下:

status: jasmine.createSpy().andCallFake(function(msg) { return this });
Run Code Online (Sandbox Code Playgroud)

  • 在Jasmine 2.4中,它现在是`.and.callFake(function(){})` (19认同)
  • 问及回答.+2互联网为您服务. (2认同)

小智 9

这对我有用:

const res = {
  status: jasmine.createSpy('status').and.callFake(() => res),
  send: jasmine.createSpy('send').and.callFake(() => res),
};
Run Code Online (Sandbox Code Playgroud)