13

このブログ投稿のように、コンポーネント統合テストを作成しようとしていますが、コンポーネントにlink-to動的ルートがあり、hrefプロパティが入力されていません。これは、私がやろうとしていることの簡略化されたバージョンです。

私のコンポーネントのテンプレート:

{{#link-to "myModel" model}}

そして、ここに私のテストの関連部分があります:

this.set('model', {
  id: 'myId',
  name: 'My Name'
});

this.render(hbs`
{{my-component model=model}}
`);

assert.equal(this.$('a').attr('href'), '/myModel/myId'); // fails

は、属性link-toなしでレンダリングされます。hrefテストで HTML をログに記録すると、次のようになります。

<a id="ember283" class="ember-view">My Name</a>

link-toにhrefを持たせるために、「モデル」に対して何かする必要がありますか? 私link-toは emberのテストを調べようとしましたが、テストのこの部分を見つけました。これは基本的に私が行っていることです - POJO にidキーセットを提供します。何か案は?

編集:

DEBUG: -------------------------------
DEBUG: Ember      : 1.13.8
DEBUG: Ember Data : 1.13.10
DEBUG: jQuery     : 1.11.3
DEBUG: -------------------------------
4

4 に答える 4

12

ルーターを調べて、テストセットアップでルーティングを開始するように指示するだけで、機能することがわかりました。@rwjblueのこのコミットから:

// tests/helpers/setup-router.js

export default function({ container }) {
  const router = container.lookup('router:main');
  router.startRouting(true);
}


// tests/integration/components/my-component-test.js

import { moduleForComponent, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';
import setupRouter from '../../helpers/setup-router';

moduleForComponent('my-component', 'Integration | Component | my component', {
  integration: true,
  setup() {
    setupRouter(this);
  }
});
于 2015-10-09T22:18:19.487 に答える