Я, наконец, налагаю TDD на проект, над которым я работаю, и бегу в края ... Я знаю код, который я хочу, но не как тест на это :)OCMock проверяет объект на выделение и вызывается метод
реализация Я ищу это:
- (void) doSomething
{
FooBuilder *foo = [[FooBuilder alloc] init];
[foo doSomethingElseWithCompletionBlock:^{
[self somethingDone];
}];
}
Так что я хочу, чтобы мой тест, чтобы проверить, что а) метод испытуемый выделяет новый FooBuilder
и б) этот метод, то вызовы метод нового объекта.
Как это сделать? Я начал с пути, пытаясь издеваться над методом класса alloc
, но быстро определил, что по этому пути лежит безумие.
Примечание. Я не тестировал FooBuilder сам с этим тестом, просто чтобы сотрудничество было.
Jon, спасибо за ваше внимание и подробный ответ - но я думаю, что здесь что-то не хватает. Вы диагностируете связь между тестируемым классом и классом 'FooBuilder' как проблему.При этом я чувствую, что вы делаете что-то просто намного сложнее. У меня есть панель объектов, которая отображает Foos; для этого ему нужно построить Foo с FooBuilder. Я чувствую, что вы просите меня ввести общность. Мне не нужно только упрощать тестирование. – dpassage
Я проснулся сегодня утром, осознав, что проблема на самом деле является просто инъекцией зависимости класса. Поэтому я полностью переписал свой ответ; попробуйте его для размера. ... Если он все еще будет чересчур сложным, сообщите мне, и я попытаюсь объяснить дальше. –
Я все еще думаю, что вы не получаете то, что я прошу. Мой вопрос заключается в том, как управлять OCMock API, чтобы гарантировать, что мой объект-тест делает правильные исходящие вызовы. Вы по-прежнему пытаетесь ввести общность в класс, который ему не нужен. – dpassage