Вдохновленный this выпуск на objc.io Я решил попробовать BDD в своем новом проекте. Вот моя проблема: я хочу проверить, что MYCredentialStorage
каким-то образом сохраняет учетные данные, которые я прошу хранить, а именно, что при следующем запуске приложения я получаю те же учетные данные. MYCredentialStorage
использует брелок, поэтому я мог высмеять его и убедиться, что вызываются функции SecItemAdd
или SecItemUpdate
, но я не должен проверять (или знать) MYCredentialStorage
личные методы, не так ли?
Я уверен, что я не единственный, кто столкнулся с этой проблемой, поэтому я прошу совета, так как я очень новичок в BDD. Спасибо заранее.Рекомендации по BDD для iOS необходимо
1
A
ответ
1
Из комментариев
Михал Чуба писал:
Взгляните на другую статью из той же objc.io вопроса - инъекции зависимостей: objc.io/issue-15/dependency- injection.html. В принципе, вы можете ввести макет брелка в MYCredentialStorage (но, возможно, вам понадобится создать оболочку для методов SecItem *).
Бен Flynn писал:
Я согласен с @ MichałCiuba - нет универсального способа, чтобы выразить, что пункт будет сохраняться между выполнением вашего приложения. Если вы идете по маршруту DI, я бы сделал то, что он сказал. Если вы не делаете DI, я бы не стеснялся насмехаться над хранилищем брелка или вашими частными методами. Я был бы явным в названии теста, чтобы точно выразить свои ожидания.
Взгляните на другую статью из той же проблемы с objc.io - зависимость: http://www.objc.io/issue-15/dependency-injection.html. В принципе, вы можете ввести макет брелка в 'MYCredentialStorage' (но, возможно, вам понадобится создать оболочку для методов' SecItem' *). –
Я согласен с @ MichałCiuba - нет общего способа выразить, что элемент будет сохраняться между выполнением вашего приложения. Если вы идете по маршруту DI, я бы сделал то, что он сказал. Если вы не делаете DI, я бы не стеснялся насмехаться над хранилищем брелка или вашими частными методами. Я был бы явным в названии теста, чтобы точно выразить свои ожидания. –
Спасибо, если бы я мог принять оба ваши комментария в качестве ответа. Я закончил тем, что использовал инъекцию конструктора и издевательский брелок. – dariaa