Я ищу способ проверить свойства вложенных объектов. По сути, у меня есть спецификация, которая проверит результат, который мы получаем от внешней службы. Поскольку я не хочу делать gazillion звонки в службу для каждого примера, который я хочу протестировать, запрос делается один раз в начале спецификации, а затем мы представляем набор ожиданий, проверяющих ответ.Kiwi: Есть ли способ иметь динамическое число примеров, определяемое переменной времени выполнения?
Лучший объяснил с образцом кода (который не работает должным образом, очевидно):.
beforeAll(^{
wait = [self waitFor:^(id handler) { [session.account all:handler]; }];
accounts = wait.result;
});
it(@"should make a successfull request", ^{
[[wait should] beSuccessful];
});
it(@"returns a non-nil list of accounts", ^{
[[accounts shouldNot] beNil];
});
it(@"should have at least 1 account", ^{
[[[accounts.accounts should] haveAtLeast:1] account];
});
context(@"each account", ^{
for (Account* account in accounts.accounts) {
it(@"should have a name", ^{
[[account.name shouldNot] beEmpty];
});
it(@"should have an accountID", ^{
[[account.accountID shouldNot] equal:@"bla"];
});
}
});
});
Это «каждый счет» контекст Я заинтересован в принципе, вызов возвращает набор и я хочу, чтобы каждый из них имел силу.
Я мог бы обернуть это и иметь петли в блоках it(), и этот вид работает, но он не говорит мне, какой элемент был неисправен, и все верификаторы работают после неисправного (например, при встрече в nil account.name) возвращает ошибку Trying to add another verifier without specifying a matcher for the previous one.
. Так что, не очень полезно.
Я думал о просто проверке возвращенного json, потому что есть также набор спецификаций, которые мы имеем для (unit-) тестирования наших собственных компонентов независимо от ответа, который мы получаем от службы. Но это не сработает, так как мы не очень заботимся о точном наборе данных (что также подвержено изменениям), просто формат должен быть правильным.
При написании спецификации с локальными testdata, я бы написал несколько спецификаций для каждого уровня в иерархии, но я хочу, чтобы это было вместе: я хотел бы протестировать один ответ, полученный от сервера, в полном объеме.
Я попытался сделать это динамически, добавив больше KWExamples, когда тест запущен, но это, похоже, не работает.
Любая идея (или я неправильно ее использую для чего-то, чего она не предназначалась)?
(также размещены как вопрос Github: https://github.com/allending/Kiwi/issues/435)
Ну, конечно, но тогда мы тестируем несколько вещей в одной спецификации, и становится трудно узнать, какой из них терпит неудачу. – Inferis