Как сослаться на индекс строки в таблице фикстур 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 }
    }
}
Другие вопросы по тегам