- 我已经设置了相当棒的茶包 https://github.com/modeset/teabag来在我的 ember 应用程序上运行集成测试。
- 我正在关注 Erik Bryn 在他的演示文稿中讨论的过程:http ://www.youtube.com/watch?v=nO1hxT9GBTs 使用https://github.com/ebryn/bloggr-client-rails中的代码作为模板.
- 我切换到 ember 夹具适配器进行测试。
我的所有东西都可以很好地使用我在这样的固定装置文件中定义的静态固定装置:
var user = {
id: 1,
email: "test@testing.com",
firstName: "Han",
lastName: "Solo"
};
var userArray = [];
userArray.push(user);
App.User.FIXTURES = userArray;
但是....如果我想从我现有的 Rails 种子数据中动态提取固定数据。(我将文件重命名为 user_fixture.js.erb)然后执行:
<% @user = User.find_by_email('test@testing.com') %>
var currentUser = <%= UserSerializer.new(@user, :root => false).to_json %>;
var userArray = [];
userArray.push(user);
App.User.FIXTURES = userArray;
我的测试失败了。我可以看到数据没有填充 ember 应用程序,但如果我这样做:
App.User.Fixtures
从控制台然后我可以看到该对象按预期存在。我不知道为什么会这样,有人有什么建议吗?
为了完整起见,这里是我在测试中设置 Ember 的方式(与 Erik Bryn 的示例相同):
module("Home Routes:", {
setup: function() {
Ember.run(App, App.advanceReadiness);
},
teardown: function() {
App.reset();
}
});
这是 test_helper.js 的内容:
//= require application
//= require_tree .
//= require_self
document.write('<div id="ember-testing-container"><div id="ember-testing"></div></div>');
document.write('<style>#ember-testing-container { position: absolute; background: white; bottom: 45px; left: 45px; width: 640px; height: 384px; overflow: auto; z-index: 9999; border: 1px solid #ccc; } #ember-testing { zoom: 50%; }</style>');
App.rootElement = '#ember-testing';
App.setupForTesting();
App.injectTestHelpers();
function exists(selector) {
return !!find(selector).length;
};
更新:我发现一个(手指越过唯一的)问题是 Active Model Serializer 正在创建下划线键名,而 Ember 期待骆驼化版本。