Ember测试:无法读取null的属性'createRecord'

时间:2014-09-06 20:21:07

标签: unit-testing ember.js coffeescript ember-cli

在我的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功能吗?

2 个答案:

答案 0 :(得分:1)

因为ember-qunit没有将商店注入您的控制器,所以它适用于单元测试,而不是集成测试。而Ember Data的商店不属于该控制器的范围。

答案 1 :(得分:0)

您可以将余烬数据存储添加到"需要"单元测试部分。您还需要将正在创建的任何模型添加到" needs"这样的部分:

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

这会将存储的实际实例注入到正在测试的对象(控制器,组件,路由等)中。