如何在ember测试中枚举所有路径名称

时间:2018-02-13 21:06:26

标签: ember.js ember-router ember-testing

我们需要在测试中获取router.js中所有路径名称的列表。最好是较低级别的测试(单位/积分)。

上下文用例:我们拥有所有路由所需的元数据。这个测试是为了确保在添加新路由时添加了适当的元数据,而不是忘记了。

已经提出了类似问题herehere,但尝试在测试中采用/修改这些解决方案并不富有成效。

1 个答案:

答案 0 :(得分:1)

这是我在验收测试中如何设法完成的。

这是我对此解决方案不喜欢的事情:

  • 它具有较高的验收测试开销。
  • 它使用私有API。

私有API虽然在ember-inspector中使用,但如果它在将来中断,我们应该能够引用它们在该回购中发生的任何变化。

import { module, test } from 'qunit';
import { setupApplicationTest } from 'ember-qunit';

module('Acceptance | route metadata test', hooks => {
  setupApplicationTest(hooks);

  test('we can get route names', function(assert) {

    const router = this.owner.lookup('router:main');

    router.setupRouter();

    const routeNames = router._routerMicrolib.recognizer.names;
    assert.ok(Object.keys(routeNames).length > 0);

  });
});

测试仅断言我们有路由名称。对于原始用例,更改此代码以迭代routeNames

是微不足道的
ember-cli: 3.5.0
node: 8.12.0

通过this issue

找到了呼叫setupRouter()的需要