ember.js - 如何为 ember-addon 中定义的组件添加集成测试

标签 ember.js ember-qunit ember-testing ember-addon ember-pods

这是我的 ember-addon 的结构。

addon/
.. components/
.... my-component/
...... component.js
...... style.less
...... template.hbs   
.. engine.js
.. routes.js
app/  
.. components/
.... my-component/
...... component.js
.. etc ..
tests/  
.. dummy/
.... app/
...... components/
...... controllers/
...... etc ....
.. integration/  
.... components/  
...... my-component-test.js  
.. index.html
.. test-helper.js

测试文件tests/integration/components/my-component-test.js:

//tests/integration/component/my-component-test.js
import { moduleForComponent, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';

moduleForComponent('my-component', 'my component module description', {
  integration: true
});

test('it renders', function(assert) {
  this.render(hbs`{{my-component}}`);

  console.log('This rendered', this.$()[0]);
  assert.ok(false);
});

我也从 app/ 链接到我的插件:

//app/components/my-component/component.js
export { default } from 'my-application/components/my-component/component'

假设我的组件模板如下所示:

<!-- addon/components/my-component/template.hbs -->
<div class="foo"></div>

假设我的组件的 js 文件如下所示:

//addon/components/my-component/component.js
import Ember from 'ember'
export default Ember.Component.extend({
    someProperty: 'someValue'
});

我假设控制台日志的输出是:

<div id="ember234" class="ember-view>
    <div class="foo"></div>
</div>

但不幸的是 Qunit 中的控制台出现了:

<div id="ember234" class="ember-view">
    <!---->
</div>

Ember 是否正在努力寻找我的 .hbs 模板?其他项目似乎使用标准分组进行所有组件测试(即命名组件 js 文件和模板文件,而不是 component.jstemplate.js)。

https://github.com/edgycircle/ember-pikaday

这与我问的另一个问题有关,但我认为在一个单独的问题中继续探讨这个测试问题更合适。

How does ember-qunit render components in integration testing?

我还想知道是否需要某种特定的方法来测试这个 Pod 布局。

最佳答案

您的component.js必须将模板导入为layout。你应该这样做:

//addon/components/my-component/component.js
import Ember from 'ember';
import layout from '../../templates/components/my-component/template'

export default Ember.Component.extend({
    layout,
    someProperty: 'someValue'
});

我可以建议你看看其他插件的代码。如ember-contextual-table , ember-bootstrap .

关于ember.js - 如何为 ember-addon 中定义的组件添加集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39241493/

相关文章:

javascript - 如何将字符串转换为对象类型

javascript - 如果路由是登录,如何在应用程序模板中隐藏导航栏

javascript - 在 Ember 中全局渲染 View

javascript - ember-cli: moduleFor 失败并出现 "Attempting to register an unknown factory"错误

testing - 对象被销毁后,Ember 无法调用 writableChainWatchers

javascript - 清除每个测试的 cookie 不起作用。使用 Karma + Qunit(使用巴甫洛夫)+ Ember。在 PhantomJS/Chrome 中运行

testing - Ember QUnit 模块用于(测试)适配器检索存储

unit-testing - 助手 Ember-cli 的单元测试

testing - 如何使用 fillIn 附加预填充的文本区域内容

ember.js - 如何在 ember 中 stub 组件的操作?