我正在用角度JS编写状态的jasmine测试用例。
我的州已经解决了类似的问题。
resolve: {
myResult: function () {
var dfd = $q.defer();
var queryOptions = new PreparedQueryOptions().$expand(["children"]).effectivity(myPredicate);
//Rest of the code
return dfd.promise;
}
}
在这里,我扩展了PreparedQueryOptions以在其中添加有效方法。 现在从我的测试用例开始跟随调用
myState.definition.resolve.myResult();
它的投掷错误是“有效性不是一种功能”。但是$ expand正在被正确执行。
PreparedQueryOptions没有这个方法,但我添加了这个并且它正常工作(没有任何错误)。
如何解决这个问题?我应该用这些方法编写间谍吗?
答案 0 :(得分:1)
您正在测试的代码调用您为PreparedQueryOptions
编写的扩展名。如果您还没有将该扩展包含在测试框架中,那么您的测试将会失败,因为该扩展将被调用并且将是未定义的。
由于您没有对PreparedQueryOptions
或扩展程序进行测试,因此我建议将其删除以用于测试用例。如果你使用的是Jasmine,你可以这样做:
var PreparedQueryOptions = jasmine.createSpy('PreparedQueryOptions');
PreparedQueryOptions.$extend = jasmine.createSpy('$extend');
//return empty object so that queryOptions variable will be defined
PreparedQueryOptions.$extend.effectivity = function() { return {}};