从验收测试访问模型

时间:2015-07-22 01:06:45

标签: ember.js

如何访问当前型号?我知道application.__container_.lookup,但我知道这有点像黑客。

import Ember from 'ember';
import { module, test } from 'qunit';
import startApp from 'myapp/tests/helpers/start-app';

let application;

module('Acceptance | booking/edit', {
  beforeEach: function() {
    application = startApp();
  },

  afterEach: function() {
    Ember.run(application, 'destroy');
  }
});

test('visiting /booking/edit', function(assert) {
  visit('/booking/1');

  //At this point I would like to access the model returned from the route model hook.

  andThen(function() {
    assert.equal(currentURL(), '/booking/1');
  });
});

示例路线摘录。

  this.route('booking', { path:'/booking' }, function() {
    this.route('edit', { path:'/:booking_id' }, function() {
      this.route('account', { path:'/account' });

      ...
    });

   ...
  });

1 个答案:

答案 0 :(得分:1)

您应该能够使用moduleFor,然后在测试中您可以使用this.subject()来访问控制器。

moduleFor('controller:bookingsEdit', 'Bookings Edit Controller');

如果moduleFor未定义。然后导入moduleFor import {moduleFor} from 'ember-qunit'; 然后在测试中,您可以使用this.subject()访问控制器

  

moduleFor(fullName [,description [,callbacks]])

     

fullName:(String) - 单位的全名,即   controller:application,route:index。

     

description:(String)optional - 模块的描述

     

回调:(对象)可选 - 正常的QUnit回调(设置和   teardown),除了需要之外,还允许你指定另一个   测试所需的单位。

http://guides.emberjs.com/v1.10.0/testing/testing-controllers/

https://github.com/rwjblue/ember-qunit