【问题标题】:angular, karma dependency injection, inject failing角度,业力依赖注入,注入失败
【发布时间】:2014-10-14 02:57:14
【问题描述】:

所以,我正在尝试掌握测试角度,但我有点卡住了......根据我所读到的内容(或者我从我所读到的内容中理解的内容),下面应该工作,但我收到以下错误:

错误:[ng:areq] 参数 'fn' 不是函数,得到了对象 http://errors.angularjs.org/1.2.26/ng/areq?p0=fn&p1=not%20a%20function%2C%20got%20Object

app = angular.module("MyApp", ["ngMock"])
myService = null

angular.module("MyApp").factory "myDependency", () ->
  getSomething: ->
    "awesome"

angular.module("MyApp").factory "myService", (myDependency) ->
  useDependency: ->
    myDependency.getSomething()

describe "myService", ->
  beforeEach ->
    module "MyApp", ($provide) ->
      mockDependency =
        getSomething: ->
          "mockReturnValue"

      console.log "providing"

      $provide.value("myDependency", mockDependency)

    inject (_myService_) ->
      console.log "injecting"
      myService = _myService_

  it "is there", ->
    expect(myService).not.toBeNull()
    expect(myService.useDependency()).toEq("mockReturnValue")

值得一提的是,“提供者”出现在日志中,但“注入”没有

【问题讨论】:

    标签: angularjs karma-jasmine angular-mock


    【解决方案1】:

    啊哈!我想通了!!!

    module "MyApp", ($provide) ->
      mockDependency =
        getSomething: ->
          "mockReturnValue"
    
      console.log "providing"
    
      $provide.value("myDependency", mockDependency)
      return
    

    这修复了错误!我假设如果一个模块返回一些东西,它必须是某种类型。如果它为空,则 Angular 会忽略它。太棒了!

    【讨论】:

      猜你喜欢
      • 2017-09-16
      • 2018-10-16
      • 2012-08-13
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      • 1970-01-01
      相关资源
      最近更新 更多