我有一个组件listing-table
,它包含许多属性,如下所示:
{{listing-table model=model.devices type='user' exclude='customerName'}}
这可以按预期工作,集成测试也可以正常工作。但是,我的验收测试失败了,因为显然我的exclude
属性在运行验收测试时没有被考虑在内。
我已经通过打印来控制组件的javascript文件中this.get('exclude')
的值并获取undefined
。但是,打印例如this.get('type')
产生预期结果。
出于测试目的,我已经删除exclude
并用type
取代type='endpointName,typeName'
的值,但是,我会在控制台中获取之前的值,例如user
。
这总是令人费解,我真的很想知道验收测试的问题。任何提示都非常受欢迎,谢谢你的时间!
编辑:
我现在已经编辑了我的验收测试,以排除点击各种元素以进入包含我的listing-table
组件的路线:
自:
visit('/users/1')
click('a:contains("Devices")')
要:
visit('/users/1/devices')
测试通过。我仍然不明白为什么点击使我的组件的属性消失,而访问页面直接工作正常。
编辑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
文件基本上使用this.get('exclude')
函数中的init ()
来处理排除,但正如我所说,如果我在该文件中添加console.log(this.get('exclude')
,我会得到undefined
。
编辑3:
经过更多测试后,我取得了一些进展,结果问题需要自己的页面here。
答案 0 :(得分:1)
只是一些想法:
可能需要查看一些代码。