对于使用输出HTML的帮助程序的组件,如何在Ember中进行QUnit Integration测试?

时间:2016-04-13 14:48:25

标签: ember.js integration-testing qunit ember-qunit

我有一个Ember组件,它使用一个创建HTML的帮助器,我正在尝试创建一个测试,检查组合组件和帮助HTML的HTML。

示例...
组件产生:<div class="one"></div>

助手产生:<div class="two"></div>

联合收割机产生:<div class="one"><div class="two"></div></div>

正在发生的事情是HTMLBars没有生成帮助程序的HTML。它确实输入了输入帮助程序的JSON值。

因此测试产生:<div class="one">true</div>

我是否需要提供一些内容来说明帮助者应该是活跃的?

1 个答案:

答案 0 :(得分:2)

您的代码中必定存在错误。如果您的组件消耗帮助程序或不进行集成测试,则无关紧要。我写了一篇简短的Ember Twiddle来演示:https://ember-twiddle.com/a50c05ec5a050a4c72fd3c53445e3e1d

// /app/helpers/hello-world.js
import Ember from 'ember';

export function helloWorld(params/*, hash*/) {
  return new Ember.Handlebars.SafeString('<strong>Hello World!</strong>');
}

export default Ember.Helper.helper(helloWorld);

// /app/components/component-using-helper.js
import Ember from 'ember';

export default Ember.Component.extend({
  tagName: 'p'
});

// /tests/integration/components/component-using-helper.js

import { moduleForComponent, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';

moduleForComponent('component-using-helper', 'TODO: put something here', {
  integration: true
});

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

  assert.ok(this.$('p').length === 1);
  assert.ok(this.$('p strong').length === 1);
  assert.equal(this.$('p strong').html().trim(), 'Hello World!');
});

测试通行证。