Как бы вы, go, написали тест Tasty HUnit, который включает в себя несколько проверок одной переменной фикстуры в одном тесте или, по крайней мере, аккуратную группу таких тестов?
Например, рассмотрите это Спецификация корнишона:
Scenario: A 3-Vector has x, y and z components
Given: a <- Vec(1.0, 2.0, 3.0)
Then: a.x = 1.0
And a.y = 2.0
And a.z = 3.0
Я мог бы сделать что-то вроде этого, но это очень часто повторяется:
unitTests = testGroup "All Unit Tests"
[ testCase "A 3-Vector has x, y and z components" $ assertEqual [] (x $ Vec 1.0 2.0 3.0) 1.0
, testCase "A 3-Vector has x, y and z components" $ assertEqual [] (y $ Vec 1.0 2.0 3.0) 2.0
, testCase "A 3-Vector has x, y and z components" $ assertEqual [] (z $ Vec 1.0 2.0 3.0) 3.0
]
Меня беспокоит то, что я повторил название сценария три раза , и я также трижды создавал приспособление. Я хотел бы найти способ сгруппировать все три утверждения в одну группу с заголовком «3-вектор имеет компоненты x, y и z» и указать прибор Ve c только один раз.
Я мог бы расширить спецификацию теста, чтобы свести к минимуму повторение описаний, но я бы предпочел использовать Gherkin spe c, если смогу:
unitTests = testGroup "All Unit Tests"
[ testCase "A 3-Vector has x component" $ assertEqual [] (x $ Vec 1.0 2.0 3.0) 1.0
, testCase "A 3-Vector has y component" $ assertEqual [] (y $ Vec 1.0 2.0 3.0) 2.0
, testCase "A 3-Vector has z component" $ assertEqual [] (z $ Vec 1.0 2.0 3.0) 3.0
]
Я не знаю, как определите Ve c только один раз для группы.
Я бы хотел сделать что-то вроде этого (не настоящий код!):
unitTests = testGroup "All Unit Tests"
[ testScenario "A 3-Vector has x, y and z components"
let v = Vec 1.0 2.0 3.0 in
[ testCase "x" assertEqual [] (x $ v) 1.0
, testCase "y" assertEqual [] (y $ v) 2.0
, testCase "z" assertEqual [] (z $ v) 3.0
]
]