2014-09-06 2 views
5

Похоже, что store не доступен в моих тестах Ember, будь то в контексте ObjectController или в рамках любых модульных тестов. Мой блок тест:Испытание на утечку: невозможно прочитать свойство «createRecord» из null

`import {test, moduleFor} from "ember-qunit"` 
`import DS from "ember-data"` 

moduleFor "controller:register", "RegisterController", { 
} 

test "store is working", -> 
    expect 1 
    controller = @subject() 
    Ember.run(-> 
     sampleUser = controller.get("store").createRecord("user", { 
      username: "myuser" 
      password: "otherpassword" 
     }) 
     ok(sampleUser instanceof DS.Model) 
    ) 

тест даст:

Умер на тест № 1 при испытании (http://localhost:4200/assets/vendor.js:73539:13) на Eval (приложение/тесты/блок/Контроллеры/регистровой test.js : 19: 5) в requireModule (http://localhost:4200/assets/vendor.js:54:29) в http://localhost:4200/assets/test-loader.js:14:29: не удается прочитать свойство 'createRecord' нулевых

Может кто-нибудь объяснить, ш hy Я не могу получить доступ к возможностям DS либо из моих тестов, либо из самого контроллера (при выполнении тестов)?

+0

Не могли бы вы создать экземпляр магазина вручную? Затем введите/добавьте это в свой контроллер (в тесте), чтобы убедиться, что это работает так, как вы ожидали? –

ответ

1

Поскольку ember-qunit не вводит хранилище в ваши контроллеры, он предназначен для модульных испытаний, а не для интеграционных тестов. И магазин Ember Data находится за пределами этого контроллера.

+0

Хорошо, тогда как мне исправить? – user1429980

+0

Что вы пытаетесь проверить здесь? Ember Data? Я бы добавил модульные тесты к структуре Ember Data, а не к вашим. Это то же самое, что и тестирование jQuery. – Kingpin2k

+0

https://github.com/emberjs/data/blob/master/packages/ember-data/tests/unit/store/create_record_test.js – Kingpin2k

0

Вы можете добавить хранилище данных ember в раздел «needs» модульного теста. Вы также должны добавить любые модели которые созданы для «нужд» раздела следующим образом:

needs: ['service:store', 'model:user'] 

Это будет вводить реальный экземпляр магазина в объект (контроллер, компонентный, маршрут и т.д.) испытываются ,