这是来自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
答案 0 :(得分:4)
您实际上已经获得了有用的堆栈跟踪,但是在编译的vendor.js
而不是源文件中。
如果您正在使用Chrome,请在来源面板中打开assets/vendor.js
。然后在第1685行设置一个断点。由于ember-cli在资产编译时创建源地图,Chrome应立即将您带到源文件中的相应行。
令人讨厌的是,Testem并没有指向源文件,但是您应该能够从已编译的文件中恢复原状。
(另外,看起来堆栈跟踪的顶行来自jQuery,如果有帮助的话。)