Шпион или Мок или что-то еще. - PullRequest
0 голосов
/ 18 октября 2018

Я прочитал книгу TDD iOS Development и у меня возникло ощущение, что я не понимаю разницы между поддельными / заглушками / шпионскими / поддельными словами.

Вот пример кода из этой книги:

ItemListDataProviderTests class:
extension ItemListDataProviderTests {
    class MockTableView: UITableView {
        var cellGotDequeued = false
        override func dequeueReusableCell(
            withIdentifier identifier: String,
            for indexPath: IndexPath) -> UITableViewCell {
            cellGotDequeued = true
            return super.dequeueReusableCell(withIdentifier: identifier,
                                             for: indexPath)
        }
    }
}

Здесь у нас есть фиктивное представление таблицы, но если мы читаем Мартин Фаулер, который говорит следующее :

  • Пустые объекты передаются вокруг, ноникогда не использовался.Обычно они просто используются для заполнения списков параметров.
  • Поддельные объекты на самом деле имеют рабочие реализации, но обычно используют некоторые ярлыки, которые делают их непригодными для производства (хороший пример - база данных в памяти).).
  • Заглушки обеспечивают постоянные ответы на вызовы, сделанные во время теста, обычно вообще не реагируя ни на что, кроме того, что запрограммировано для теста.
  • Шпионы - это заглушки, которые также записывают некоторую информацию в зависимости от того, как они были вызваны.Одной из форм этого может быть служба электронной почты, которая записывает, сколько сообщений было отправлено.
  • Моксы - это то, о чем мы здесь говорим: объекты, предварительно запрограммированные с ожиданиями, которые формируют спецификациюожидаемые вызовы.

Но этот MockTableView не похож на Mock.Для меня это выглядит как шпион, потому что у него совсем нет ожиданий, но все же у него есть некоторая информация для записи.

Что такое TableView здесь Mock или Spy или что-то еще?

...