如何在编写测试时检索路径的模型()?

时间:2018-05-22 14:10:08

标签: testing ember.js

我的路线有自己的模型,不是来自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 :(得分: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');
    });
  });
});