Why do my ember tests give me TypeError: 'undefined' is not a function?
Why do my ember tests give me TypeError: 'undefined' is not a function?
这是 ember test --serv
输出的错误:
Integration | Component | date-time-input: it renders
✘ TypeError: 'undefined' is not a function (evaluating 'elem.getAttribute( name )')
http://localhost:7357/assets/vendor.js:1685
这发生在我所有的集成和验收测试中。
如何在没有正常堆栈跟踪的情况下调试此错误?
有没有办法配置 ember 给我一个像样的堆栈跟踪?
下面是针对上述错误的测试:
import { moduleForComponent, test } from 'ember-qunit';
import Ember from 'ember';
import hbs from 'htmlbars-inline-precompile';
moduleForComponent('date-time-input',
'Integration | Component | date-time-input', {
integration: true,
});
test('it renders', function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.on('myAction', function(val) { ... });
let two = Ember.Object.extend({
someDate: null,
});
this.set('two', two);
this.render(hbs`{{date-time-input model=two field='someDate'}}`);
assert.notEqual(this.$().text().indexOf('2016'), -1);
});
和相应的组件
import Ember from 'ember';
export default Ember.Component.extend({
fieldValue: Ember.computed('model', 'field', function () {
let fieldName = this.get('field');
let value = this.get('model.' + fieldName);
return value;
}).readOnly(),
actions: {
dateChanged: function (value) {
let model = this.get('model');
let field = this.get('field');
model.set(field, value);
},
},
});
{{flat-pickr
dateFormat='F j, Y at'
timeFormat='h:i K'
value=fieldValue
enableTime=true
onChange=(action 'dateChanged')
}}
这是我的回购协议,以防有人好奇:https://github.com/NullVoxPopuli/aeonvera-ui
您实际上得到了一个有用的堆栈跟踪,尽管是在编译的 vendor.js
而不是在源文件中。
如果您使用的是 Chrome,请在源面板中打开 assets/vendor.js
。然后在第 1685 行设置断点。因为 ember-cli 在资产编译时创建源映射,Chrome 应该会立即将您带到源文件中的相应行。
令人恼火的是 Testem 没有指向源文件,但您应该能够从编译后的文件返回。
(此外,您的堆栈跟踪的第一行似乎来自 jQuery,如果有帮助的话。)
这是 ember test --serv
输出的错误:
Integration | Component | date-time-input: it renders
✘ TypeError: 'undefined' is not a function (evaluating 'elem.getAttribute( name )')
http://localhost:7357/assets/vendor.js:1685
这发生在我所有的集成和验收测试中。
如何在没有正常堆栈跟踪的情况下调试此错误? 有没有办法配置 ember 给我一个像样的堆栈跟踪?
下面是针对上述错误的测试:
import { moduleForComponent, test } from 'ember-qunit';
import Ember from 'ember';
import hbs from 'htmlbars-inline-precompile';
moduleForComponent('date-time-input',
'Integration | Component | date-time-input', {
integration: true,
});
test('it renders', function(assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.on('myAction', function(val) { ... });
let two = Ember.Object.extend({
someDate: null,
});
this.set('two', two);
this.render(hbs`{{date-time-input model=two field='someDate'}}`);
assert.notEqual(this.$().text().indexOf('2016'), -1);
});
和相应的组件
import Ember from 'ember';
export default Ember.Component.extend({
fieldValue: Ember.computed('model', 'field', function () {
let fieldName = this.get('field');
let value = this.get('model.' + fieldName);
return value;
}).readOnly(),
actions: {
dateChanged: function (value) {
let model = this.get('model');
let field = this.get('field');
model.set(field, value);
},
},
});
{{flat-pickr
dateFormat='F j, Y at'
timeFormat='h:i K'
value=fieldValue
enableTime=true
onChange=(action 'dateChanged')
}}
这是我的回购协议,以防有人好奇:https://github.com/NullVoxPopuli/aeonvera-ui
您实际上得到了一个有用的堆栈跟踪,尽管是在编译的 vendor.js
而不是在源文件中。
如果您使用的是 Chrome,请在源面板中打开 assets/vendor.js
。然后在第 1685 行设置断点。因为 ember-cli 在资产编译时创建源映射,Chrome 应该会立即将您带到源文件中的相应行。
令人恼火的是 Testem 没有指向源文件,但您应该能够从编译后的文件返回。
(此外,您的堆栈跟踪的第一行似乎来自 jQuery,如果有帮助的话。)