import Application from 'appkit/app';
import Router from 'appkit/router';
function startApp(attrs) {
var App;
var attributes = Ember.merge({
// useful Test defaults
rootElement: '#ember-testing',
// LOG_ACTIVE_GENERATION:false,
// LOG_VIEW_LOOKUPS: false
LOG_ACTIVE_GENERATION: true,
LOG_MODULE_RESOLVER: true,
LOG_TRANSITIONS: true,
LOG_TRANSITIONS_INTERNAL: true,
LOG_VIEW_LOOKUPS: true
}, attrs); // but you can override;
Ember.run.join(function(){
App = Application.create(attributes);
App.setupForTesting();
App.injectTestHelpers();
});
Router.reopen({
location: 'none'
});
App.reset(); // this shouldn't be needed, i want to be able to "start an app at a specific URL"
return App;
}
export default startApp;//问题:我想重写默认的application:adapter,它指向Rest //在我的实际应用程序中,使用Fixture适配器时,我尝试了app.register方法,但//它不工作任何指针。
发布于 2014-04-22 01:33:35
我已经找到了解决这个问题的方法--不过,我会在底部加上一个免责声明。
为了在您的应用程序已经配置为使用另一个适配器时使用Fixture适配器,您需要重新定义您的应用程序适配器,以便它使用DS.FixtureAdapter类。
我看到您正在使用EAK,所以我在创建应用程序的Ember.run函数之前将此代码包含在startApp函数中。
define('myApp/adapters/application', ['exports'], function(exports) {
exports['default'] = DS.FixtureAdapter;
});现在,您还需要为应用程序拥有的每个模型定义fixture。您可能不想修改实际的源文件,因为这些文件只用于验收测试,因此重新定义类也能起到作用。
我创建了另一个帮助器,名为setFixtures:
function setFixtures(modelName, fixtures) {
var model = require('myApp/models/' + modelName)['default'];
model.reopenClass({
FIXTURES: fixtures
});
}
export default setFixtures;通过将此函数添加为全局函数并将以下代码添加到test-helper.js中,使jshint满意
window.setFixtures = require('myApp/tests/helpers/set-fixtures')['default'];我现在已经准备好在我的每个模块中使用它进行测试:
module('Acceptances - My fixtures', {
setup: function() {
setFixtures('my-model', [
{ id: 1, name: 'John Madden' },
{ id: 2, name: 'AEIOUAEIOUAEIOU' }
]);
App = startApp();
}
});
// your tests below免责声明:我走了这条孤单的路,这是我唯一知道的一条路,但似乎DS.FixtureAdapter仍然有一些问题(在写这篇文章的时候),而且它与你对DS.RESTAdapter的期望有几个不同(更多信息here)。但是,您可以通过调整您的fixture在测试中的外观来克服这一问题。
最大的问题是关于FixtureAdapter和hasMany的关系,特别是那些异步的关系。There's a lot of information in the GitHub issues section of ember data,当然他们会及时得到解决,但目前,这是相当不稳定的。
我确实达到了一个点,那就是我必须强制修改源代码以使FixtureAdapter满意,或者为测试动态地重新定义所有模型类--在我看来,这就像是为测试重写了应用程序的一部分。这阻止了我测试许多可能是实际错误的问题(例如,忘记了异步关系?好的,验收测试不会警告您,因为您重新定义了不需要它们的类。)
我现在倾向于Ember-testing-httpRespond。然而,这是其他问题的素材。
https://stackoverflow.com/questions/22132406
复制相似问题