簡體   English   中英

在控制器內測試Ember.js路由導航

[英]Testing Ember.js route navigation from within a controller

我試圖在我的ember-cli應用程序中編寫一個測試,該應用程序測試特定控制器操作是否會根據頁面上輸入的值將用戶帶到特定路徑。

這是我得到的錯誤:

IndexController: the setTable action navigates to the tables route
    ✘ Died on test #1     at http://localhost:7357/assets/qunit.js:425
        at test (http://localhost:7357/assets/vendor.js:72425)
        at :29
        at http://localhost:7357/assets/vendor.js:54
        at http://localhost:7357/assets/test-loader.js:14: 'null' is not an object (evaluating 'target.transitionToRoute')

如果我在瀏覽器中嘗試它,這是我在控制台中遇到的錯誤:

Error while loading route: undefined

我的路線已定義,這是我的路由器:

import Ember from 'ember';

var Router = Ember.Router.extend({
  location: AccelewaiterENV.locationType
});

Router.map(function() {
  this.route('table', { path: '/table/:table_id' });
});

export default Router;

這是我的測試:

import { test, moduleFor } from 'ember-qunit';

moduleFor('controller:index', 'IndexController', {
  // Specify the other units that are required for this test.
  // needs: ['controller:foo']
});

test('the setTable action navigates to the tables route', function() {
  var controller = this.subject();
  controller.set('tableNumber', 1);
  controller.send('setTable');
  ok(controller.get('currentPath') === '/table/1');
});

這是我的模板:

<div class="start">
  <div class="row">
    <div class="col-xs-12">

      {{input type="text"
        valueBinding="tableNumber"
        class="form-control input-lg"
        placeholder="Enter Table #"}}

      <button {{ action 'setTable' }}
         id="submit-table"
         class="btn btn-success">Ok</button>

    </div>
  </div>
</div>

這是我的控制器:

import Ember from 'ember';

export default Ember.Controller.extend({
  tableNumber: null,

  actions: {
    setTable: function() {
      var tableNumber = this.get('tableNumber');
      console.log(this.transitionTo);
      this.transitionToRoute('table/' + tableNumber);
    }
  }
});

我也創建了一個表控制器,但它目前是空的。

任何幫助非常感謝!

transitionTo僅存在於擴展Ember.Route項目上。

對於擴展Ember.Controller / Ember.ObjectController / Ember.ArrayController項目,應使用transitionToRoute

另外, currentPath僅存在於ApplicationController和集成測試中。 看起來你正在混合集成測試和單元測試。

以示例: http//emberjs.jsbin.com/wipo/33/edit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM