Javascript Ember.js:执行验收测试时组件属性消失
我有一个组件列表表,它包含许多属性,如下所示:Javascript Ember.js:执行验收测试时组件属性消失,javascript,ember.js,acceptance-testing,ember-testing,Javascript,Ember.js,Acceptance Testing,Ember Testing,我有一个组件列表表,它包含许多属性,如下所示: {{listing-table model=model.devices type='user' exclude='customerName'}} 这是预期的,集成测试也可以正常工作。但是,我的验收测试失败,因为在运行验收测试时,显然没有考虑排除属性 我已经通过打印来控制this.get'exclude'在组件的javascript文件中的值并得到未定义的值来测试了这一点。然而,打印例如this.get'type'会产生预期的结果 然后,出于测试目
{{listing-table model=model.devices type='user' exclude='customerName'}}
这是预期的,集成测试也可以正常工作。但是,我的验收测试失败,因为在运行验收测试时,显然没有考虑排除属性
我已经通过打印来控制this.get'exclude'在组件的javascript文件中的值并得到未定义的值来测试了这一点。然而,打印例如this.get'type'会产生预期的结果
然后,出于测试目的,我删除了exclude并用它替换了type的值,即type='endpointName,typeName',但是,我会在控制台中得到前面的值,例如user
这完全不是令人费解的,我真的很想知道验收测试出了什么问题。欢迎您提供任何提示,谢谢您的时间
编辑:
我现在编辑了我的验收测试,以排除通过单击各种元素来访问包含列表组件的路由:
发件人:
致:
测试通过了。我仍然不明白为什么点击会使我的组件的属性消失,而直接访问页面就可以了
编辑2:
下面是一些示例代码。这就是我的测试结果:
test('/customers/1/devices should display 5 devices', function (assert) {
let type = server.create('endpoint-type')
let user = server.create('user')
let endpoint = server.create('endpoint', { type })
server.createList('device', 5, { user })
visit('/customers');
click('a:contains("Customer 0")')
click('a:contains("Devices")')
andThen(function () {
assert.equal(find('.device-listing').length, 5, 'should see 5 listings')
assert.equal(find('th').text().trim(), 'IDModelManufacturerMACExtensionLocation', 'should only contain ID, Model, Manufacturer, MAC, Extension, and Location columns')
})
现在,在这种情况下,“我的设备”表应该省略“客户”列,但是,该列确实出现在其中,即使已使用以下命令调用了Devices.show.customers中的我的组件:
{{listing-table model=model.devices type='user' exclude='customerName'}}
我的listing-table.js文件基本上是在init函数中使用这个.get'exclude'来处理排除,但是正如我所说的,如果我在该文件中添加一个console.logthis.get'exclude',我就没有定义
编辑3:
经过更多的测试,我取得了一些进展,产生的问题需要有自己的页面。只需几点思考:
我想这一次是在你第二次尝试时变绿的时候做的。。。您是否使用和来处理断言以确保所有异步事件都已解决?
模型挂钩是否被触发?根据您进入路线的方式,模型挂钩有时不会触发:
有一些代码可以查看可能会有帮助。谢谢您的反馈!1.是的,我正在使用和;2.即使没有触发模型挂钩,为什么在浏览器中运行时同样的过程可以工作,但在测试环境中运行时失败?我将用一些代码更新我的原始问题。再次感谢。
test('/customers/1/devices should display 5 devices', function (assert) {
let type = server.create('endpoint-type')
let user = server.create('user')
let endpoint = server.create('endpoint', { type })
server.createList('device', 5, { user })
visit('/customers');
click('a:contains("Customer 0")')
click('a:contains("Devices")')
andThen(function () {
assert.equal(find('.device-listing').length, 5, 'should see 5 listings')
assert.equal(find('th').text().trim(), 'IDModelManufacturerMACExtensionLocation', 'should only contain ID, Model, Manufacturer, MAC, Extension, and Location columns')
})
{{listing-table model=model.devices type='user' exclude='customerName'}}