如何存根茉莉花模拟对象的方法?
根据茉莉花文档,模拟可以像这样创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'; });