我的路线有自己的模型,不是来自Ember商店(假设这个问题可以来自“任何地方”)。
model() {
return RSVP.hash({
value: someCall()
});
}
this.owner.lookup('route:routeName').model()
似乎不起作用,this.owner.lookup('controller:controllerName').get('model.X')
或我尝试过的任何其他内容都不起作用。
https://guides.emberjs.com/v3.1.0/testing/testing-routes/
似乎也没有提到它如何在测试中检索路线的模型?
答案 0 :(得分:0)
Ember路由器似乎没有任何类型的公共界面来根据官方文档(https://emberjs.com/api/ember/3.1/classes/EmberRouter)获取模型。它可以在内部访问模型功能。这感觉有点hackish,但我能够让它工作:
路由器:
import Route from '@ember/routing/route';
import { hash } from 'rsvp';
export default Route.extend({
model() {
return hash({
value: 'wibble'
});
},
getMyModel: function() {
return this.get('model')();
}
});
路由器测试:
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module('Unit | Route | test', function(hooks) {
setupTest(hooks);
test('do something with the router model...', function(assert) {
let route = this.owner.lookup('route:test');
assert.ok(route);
route.getMyModel().then(function(model) {
console.log(model);
assert.equal(model.value, 'wibble');
});
});
});