Как я могу получить модель маршрута () при написании теста? - PullRequest
0 голосов
/ 22 мая 2018

У меня есть маршрут, который имеет свою собственную модель, которая не приходит из магазина 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/

Как бы вы получилимодель маршрута в тесте?

1 Ответ

0 голосов
/ 22 мая 2018

Маршрутизатор 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');
    });
  });
});
...