组件单元测试单独通过,但在完整的测试套件中失败

时间:2015-02-04 22:14:40

标签: ember.js kendo-ui ember-cli

我创建了一个使用Kendo UI的日期选择器组件。我想编写一个单元测试,断言日期选择器在其输入字段被聚焦时打开。不幸的是,我在隔离运行时编写的测试通过,但在运行其他测试时失败。这是我的组成部分:

//components/date-input.js

import Ember from 'ember';

export default Ember.TextField.extend({
  _datePicker: null,

  setupDatePicker: function() {
    var datePicker = this.$().kendoDatePicker();
    this.set('_datePicker', datePicker.data('kendoDatePicker'));
  }.on('didInsertElement'),

  destroyDatePicker: function() {
    var datePicker = this.get('_datePicker');
    if (datePicker) {
      datePicker.destroy();
    }
    this.set('_datePicker', null);
  }.on('willDestroyElement'),

  openDatePicker: function() {
    this.get('_datePicker').open();
  }.on('focusIn')
});

和我的单元测试:

//tests/unit/components/date-input-test.js

import {
  moduleForComponent,
  test
} from 'ember-qunit';

moduleForComponent('date-input', 'DateInputComponent');

test('it opens the date picker when focused', function() {
  expect(2);

  this.append();

  equal($('.k-calendar-container').css('display'), 'none',
    'calendar is hidden by default');

  this.subject().$().focus();

  /**** This assertion fails. ****/
  equal($('.k-calendar-container').css('display'), 'block',
    'calendar is displayed after focus');
});

使用完整的测试套件运行时,最终断言失败:

DateInputComponent: it opens the date picker when focused
    ✘ calendar is displayed after focus
         expected block
         actual none

是否有任何理由会在隔离时通过,但在与其他测试套件一起运行时会失败?我使用Ember CLI 0.1.12,它使用Ember 1.8.1。

编辑:我已将完整的源代码推送到https://github.com/pmdarrow/ember-sandbox/tree/kendo-datepicker-test-issue,以证明此问题。

0 个答案:

没有答案