Как сослаться на индекс строки в таблице фикстур Fancordion?
Используя таблицы в Fancordion v1.0.4, как я могу использовать индекс строки в команде столбца для проверки его значения.
Например, если мой прибор:
class MyFixture : FixtureTest {
[Str:Obj?][] getCountries() {
return [["code":"AU", "name":"Australia"], ["code":"NZ", "name":"New Zealand"], ["code":"UK", "name":"United Kingdom"]]
}
}
И спецификация:
table:
col[0]+verifyEq:getCountries[#ROW]["code"]
col[1]+verifyEq:getCountries[#ROW]["name"]
Country Code Country Name
------------ ------------
AU Australia
NZ New Zealand
UK United Kingdom
Что я должен использовать вместо #ROW
заполнитель в приведенном выше примере спецификации?
Есть ли лучший способ написать эту спецификацию и приспособление? Например, лучше ли создать в приборе метод для извлечения каждой отдельной карты из списка вместо полного списка?
1 ответ
Как вы заметили, нет #ROW
макрос (но это может быть хорошим дополнением!), поэтому в настоящее время вам нужно изменить либо утверждения, либо структуру данных.
Измените утверждения:
Здесь мы немного изменим утверждения и введем наше собственное row
поле, которое увеличивается в конце каждой итерации строки:
** Hi!
**
** table:
** col[0]+verifyEq:getCountries[#FIXTURE.row]["code"]
** col[1]+verifyEq:getCountries[#FIXTURE.row]["name"]
** row+exe:row++
**
** Country Code Country Name
** ------------ ------------
** AU Australia
** NZ New Zealand
** UK United Kingdom
**
class CountryTest : FixtureTest {
Int row := 0
[Str:Obj?][] getCountries() {
return [["code":"AU", "name":"Australia"], ["code":"NZ", "name":"New Zealand"], ["code":"UK", "name":"United Kingdom"]]
}
}
Измените структуру данных:
Возможно, лучшим способом было бы преобразовать тестируемые данные в список списков. Для этого есть дополнительное преимущество неудачи, когда тестовые данные слишком много или слишком мало.
** Hi!
**
** table:
** verifyRows:getCountries()
**
** Country Code Country Name
** ------------ ------------
** AU Australia
** NZ New Zealand
** UK United Kingdom
**
class CountryTest : FixtureTest {
Str[][] getCountries() {
countries := [["code":"AU", "name":"Australia"], ["code":"NZ", "name":"New Zealand"], ["code":"UKs", "name":"United Kingdom"]]
return countries.map { it.vals }
}
}