如何在jasmine中使用$ promise.then模拟AngularJS $资源

时间:2016-02-25 12:24:33

标签: angularjs unit-testing jasmine promise

我有一个工厂,它使用Angular资源进行API调用。然后我创建了一个名为getObjectById的函数,并使用工厂查询该对象,然后在返回之前修改该对象。

服务

return getObjectById: function(id) {
   return objectFactory.getById({ id: id }).$promise.then(function(response) {
      return modifyObject(response.object);
   });
}

我想测试一下modifyObject()是否正常工作但是modifyObject是一个私有函数。

因此,为了测试它,我试图模拟对象,响应对象工厂正在与间谍一起返回。

测试

beforeEach(function() {
   inject(function(objectFactory, $q) {
      spyOn(objectFactory, 'getById').and.returnValue({ $promise: $q.when(readJSON('test/resources/object.json'))});
   });
});

但每次我运行测试时都会收到错误:

  

TypeError:无法读取属性" returnValue'未定义的

如果我可以获得任何帮助,让它变得更好。甚至建议如果我做错了布局。使用最新版本的Jasmine

2 个答案:

答案 0 :(得分:1)

这是一个很晚的答案,但是我在AngularJS / Angular混合应用程序中遇到了同样的问题。我们使用的是jasmine v1,但输入的是jasmine v2。这意味着TypeScript不会使用v1语法进行编译,但是会以TypeError: Cannot read property 'returnValue' of undefined失败。

茉莉花版本需要与输入内容匹配:

"karma-jasmine": "0.1"表示茉莉v1,需要"@types/jasmine": "^1.3.0"

"karma-jasmine": "0.3"将是茉莉v2,并且需要"@types/jasmine": "2.8"

答案 1 :(得分:0)

您错过了结束括号

TRANSLATION_UNIT sample.cpp
  +--NAMESPACE outer
     +--NAMESPACE inner
        +--CLASS_DECL MyClass
        |  +--CXX_ACCESS_SPEC_DECL
        |  +--CXX_METHOD myMethod
        |  |  +--COMPOUND_STMT
        |  |     +--RETURN_STMT
        |  |        +--UNEXPOSED_EXPR ntohs
        |  |           +--CALL_EXPR ntohs
        |  |              +--UNEXPOSED_EXPR ntohs
        |  |              |  +--DECL_REF_EXPR ntohs
        |  |              +--UNEXPOSED_EXPR
        |  |                 +--INTEGER_LITERAL
        |  +--CXX_METHOD anotherMethod
        +--CXX_METHOD anotherMethod
        |  +--TYPE_REF class outer::inner::MyClass
        |  +--COMPOUND_STMT
        |     +--RETURN_STMT
        |        +--UNEXPOSED_EXPR ntohs
        |           +--CALL_EXPR ntohs
        |              +--UNEXPOSED_EXPR ntohs
        |              |  +--DECL_REF_EXPR ntohs
        |              +--UNEXPOSED_EXPR
        |                 +--INTEGER_LITERAL
        +--FUNCTION_DECL myFunction
           +--COMPOUND_STMT
              +--RETURN_STMT
                 +--UNEXPOSED_EXPR ntohs
                    +--CALL_EXPR ntohs
                       +--UNEXPOSED_EXPR ntohs
                       |  +--DECL_REF_EXPR ntohs
                       +--UNEXPOSED_EXPR
                          +--INTEGER_LITERAL