在控制器中测试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
相关文章:
- 如果找不到路由,则以程序方式导航到服务器页面
- React路由器:防止导航到目标路由
- 主干路由器导航到../#/<路由>而不触发路由器事件.如何
- 反应.js - 导航路由时控制台中的错误
- 父路由器激活功能在每次导航到其子路由时运行
- AngularJS$locationChangeStart事件取消路由导航
- 单击链接时,我如何定义导航到详细信息页面的路由
- 使用backbone.js路由区分前后导航
- 使用AngularJS的ASP.NET 5路由导航
- React-Router使用jQuery导航路由
- Angular.js的路由和部分用于复杂的导航
- Nodejs / express - fresh install在尝试导航到路由时失败
- 在控制器中测试Ember.js的路由导航
- 如何用ngRoute创建导航路由
- 为什么AngularJS的服务在从一个路由导航到另一个路由时没有定义?
- 从Javascript正确导航到React路由
- 如何使用React + React- router - component手动导航到路由
- 在Ember.js中重新导航到当前路由
- 用AngularJS关联路由和导航样式
- AngularJs:基于路由隐藏导航栏元素