为具有PreparedQueryOptions的州编写Jasmine测试

时间:2014-07-29 18:15:39

标签: angularjs jasmine karma-jasmine

我正在用角度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没有这个方法,但我添加了这个并且它正常工作(没有任何错误)。

如何解决这个问题?我应该用这些方法编写间谍吗?

1 个答案:

答案 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 {}};