在我的Ember测试中似乎无法使用store
,无论是在ObjectController
的上下文中还是在任何单元测试中。我的单元测试:
`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(app / tests / unit / controllers / register-test.js:19:5) 在requireModule(http://localhost:4200/assets/vendor.js:54:29
) 在http://localhost:4200/assets/test-loader.js:14:29
:无法读取属性' createRecord'为null
有人可以解释为什么我无法在我的测试中或从控制器本身(运行测试时)访问DS
功能吗?
答案 0 :(得分:1)
因为ember-qunit没有将商店注入您的控制器,所以它适用于单元测试,而不是集成测试。而Ember Data的商店不属于该控制器的范围。
答案 1 :(得分:0)
您可以将余烬数据存储添加到"需要"单元测试部分。您还需要将正在创建的任何模型添加到" needs"这样的部分:
needs: ['service:store', 'model:user']
这会将存储的实际实例注入到正在测试的对象(控制器,组件,路由等)中。