Сценарий
У нас есть простая функция contains
, которая проверяет, содержит ли string
другую:
/** * Test whether the target string contains the contained string. * * @param target The string that should contains the element * @param contained The possibly contained string * @return true if the `target` string contains the `contained` string, false otherwise * @example * ``` * expect(contains('foobar', 'foo')).toBeTruthy() * ``` */ export function contains(target: string, contained: string):boolean { return target.indexOf(contained) >= 0; }
И мы хотим протестировать его, передав допустимые и недопустимые данные в тестовую функцию следующим образом:
test('contains', ()=>{ runtest(testdata, contains) })
Подход
Упряжь
Мы поместим наши тестовые данные в обвязку следующим образом:
const testdata: TestData[] = [ { it: 'should test contains', args: ['foo'], valid: ['foo', 'foobar', 'bazfoo'], invalid: ['bar', 'fobar'], }]
Обратите внимание, что args
содержит второй аргумент, который мы передаем в contains
.
Если тестируются несколько аргументов, мы можем передать их через each
. Например:
each: ['baz', 'bar', 'beech']
Интерфейс TestData
export interface TestData { it: string args?: any each?: any[] valid: any[], invalid: any[] }
Тестовая служебная функция
Дополнительные примеры
См. тесты Firefly Semantics ValidatorTS
: