ember.js 在编写测试时,如何检索路由的model()?

bnl4lu3b  于 2023-01-17  发布在  其他
关注(0)|答案(2)|浏览(102)

我有一条路线,有自己的模型,这不是来自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/中似乎也没有提到它
如何在测试中检索路由的模型?

4szc88ey

4szc88ey1#

Ember路由器似乎没有任何公共接口来获取官方文档中的模型(https://emberjs.com/api/ember/3.1/classes/EmberRouter)。它可以在内部访问模型函数。这感觉有点黑客,但我能够让它工作:
路由器:

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');
    });
  });
});
rlcwz9us

rlcwz9us2#

您可以选择:

route.get('model')()

相关问题