如何存根茉莉花模拟对象的方法?
根据茉莉花文档,模拟可以像这样创build:
jasmine.createSpyObj(someObject, ['method1', 'method2', ... ]);
你如何保留这些方法之一? 例如,如果你想testing一个方法抛出一个exception时会发生什么,你将如何做?
您必须将method1
, method2
为EricG评论的,但不能与2.0版中的andCallThrough()
(或and.callThrough()
)一起使用。 它将委托给真正的实施 。
在这种情况下,您需要使用和and.callFake()
并传递您想要调用的函数(可以抛出exception或任何您想要的):
var someObject = jasmine.createSpyObj('someObject', [ 'method1', 'method2' ]); someObject.method1.and.callFake(function() { throw 'an-exception'; });
然后你可以validation:
expect(yourFncCallingMethod1).toThrow('an-exception');
如果您使用的是打字稿,将该方法作为Jasmine.Spy
进行投射会Jasmine.Spy
。 在上面的答案(奇怪,我没有代表征求意见):
(someObject.method1 as Jasmine.Spy).and.callFake(function() { throw 'an-exception'; });