Uncaught TypeError: Не може да се извика метод „extractId“ на недефинирани Ember данни, докато се изпълняват тестове на 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]}"

Някакви предложения, свързани с това поведение?


person bugman    schedule 19.08.2013    source източник


Отговори (1)


Възможно е, когато изпълнявате този тест в изолация, адаптерът все още да не е създаден/инициализиран. Или може би е мързеливо инициализирано при първото използване на адаптера.

person Kingpin2k    schedule 19.08.2013