С использованием partMockForObject для создания одноэлементного макета класса, как создать метод типа «removeAllExpectations», чтобы удалить все запомненные? - PullRequest
2 голосов
/ 19 декабря 2011

Запутавшись в OCMock для синглтона, получите два метода, но ни один из них, на мой взгляд, не идеален.

  1. Использование partalMockForObject. Я хочу использоватьpartalMockForObject, чтобы сделать макет одноэлементного класса. Посмотрите следующий код, он работает хорошо, но недостаток в том, что синглтон [NSNotificationCenter defaultCenter] запомнит предыдущее имитационное поведение, а затем при вызове в другом месте произойдет сбой, неожиданный. Поэтому мой вопрос заключается в том, как я могу создать метод типа «removeAllExpectations», чтобы удалить все запомненные?

    id aMock = [OCMockObjectpartalMockForObject: [NSNotificationCenter defaultCenter]];

    [ожидание aMock] removeObserver: [OCMConstraint isKindOfClass: [WhereIsMyPhoneViewController class]]];

    [[aMock verify];

  2. Использование метода категории. См. http://twobitlabs.com/2011/02/mocking-singletons-with-ocmock/ упоминает еще один метод для одноэлементного макета, лично я предпочитаю частичноеMockForObject, вам не нужно имитировать все методы при модульном тестировании.

Отправил мой вопрос в группу разработчиков OCMock, но ответа пока нет, нужно ваше мнение умных парней. Любая идея или обсуждение будут оценены, спасибо заранее.

Ответы [ 2 ]

4 голосов
/ 15 октября 2012

Если вы используете самый последний исходный код OCMock (после 2012-04-06), вызовите

[aMock stopMocking];

, чтобы сбросить состояние макета объекта.

1 голос
/ 19 декабря 2011

Вы можете позвонить:

[aMock stop];

для сброса состояния макета объекта.

...