【发布时间】:2016-05-26 23:19:07
【问题描述】:
假设我有一个这样做的函数:
var createDeferredAction = function (args) {
var deferral = $q.defer();
var action = {
args: args
deferral: deferral;
};
$scope.$emit('load-module', action);
return deferral.promise;
}
然后在我的测试中,我想要这样的东西:
myService.createDeferredAction({foo: 'bar'});
var expected = {
args: {foo: 'bar'},
deferral: jasmine.anySimilar($q.defer())
}
expect($scopeSpy.$emit).toHaveBeenCalledWith('load-module', expected);
也就是说,当 jasmine 检查 expected 对象时,我不希望它尝试查找延迟的确切实例,我只希望它检查是否传入了与签名匹配的对象。例如任何延迟实例。
我知道我可以模拟 $q.defer() 并返回一个我可以在预期中使用的已知值,但我宁愿不必模拟 $q.defer()。
茉莉花可以做到这一点吗?
【问题讨论】: