未捕获的TypeError:运行QUnit测试时无法调用未定义的Ember数据的方法'extractId'

时间:2013-08-19 11:23:13

标签: ember.js ember-data qunit

我正在

Uncaught TypeError: Cannot call method 'extractId' of undefined 

在使用QUnit运行集成测试时。

失败的测试:

module "Points",
  setup: ->
    App.reset()
    Ember.run App, App.advanceReadiness

test "Index", ->
  visit("/points").then ->
    ok(exists(".title:contains('POINTS')"), "Retrieved title of points section")
    App.Point.find().then (points) ->
      equal(find(".listContainer li").length, points.get('length') , "Retrieved correct number of points")

单独运行此测试效果很好,但在模块中运行此测试会引发上面提到的错误。 似乎adapterForType(App.Point)返回一个未定义的值。

将测试更新为

test "Index", ->
  result = App.Point.find()
  visit("/points").then ->
    ok(exists(".title:contains('POINTS')"), "Retrieved title of points section")
    result.then (points) ->
      equal(find(".listContainer li").length, points.get('length') , "Retrieved correct number of points")

缓解错误。

在正确的测试中由adapterForType重新调整的值为:

Ember.inspect(this.adapterForType(App.Point))
"{serializer: <DS.FixtureSerializer:ember455>, _attributesMap: [object Object], _configurationsMap: [object Object], _outstandingOperations: [object Object], _dependencies: [object Object]}"

有关此行为的任何建议吗?

1 个答案:

答案 0 :(得分:0)

当单独运行该测试时,可能还没有创建/初始化适配器。或者也许它是在第一次使用适配器时初始化的。