Мой предыдущий подход в Objective-C для модульного тестирования было как следующее:Вызов метода в Swift Unit Tests
- Вызов открытый метод: нет проблем
- Calling частный метод: создать категорию, что класс в тестовом файле блока и поставить подпись частного метода в этой категории
в настоящее время я следующее:
- класса разработан в ObjC
- Протокол разработан в Swift
- Юнит-тесты для этого класса разработан в Swift
Класс Соответствует (непосредственно, в его открытом интерфейсе (.h)) к этому протоколу. У меня есть экземпляр класса в моих модульных тестах, но почему-то я не могу вызывать метод, объявленный в протоколе над этим экземпляром.
Теперь решение старой категории не работает с расширениями. Когда я добавляю некоторую сигнатуру метода в расширение, я получаю эту ошибку, говорящую «Тело функции, ожидаемое в объявлении».
Как я могу назвать функции с помощью Swift наилучшим образом?
PS: Я не хочу снова объявлять метод в открытом интерфейсе класса, что является уродливым решением.
Вы пытались импортировать модуль с помощью '@testable import' в вашем классе Swift? Он должен делать именно то, что вы хотите, то есть «открывать» доступ к частным материалам тестируемого класса для тестирования, не заставляя вас изменять видимость. Это [что они говорят] (https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_7_0.html): _ «Использовать @testable import {ModuleName} в вашем тестовом источнике кода, чтобы все общедоступные и внутренние подпрограммы использовались по целям XCTest, но не по другим целевым объектам и приложениям. "_ –
courteouselk
Помните; @testable позволяет только защищенным членам тестироваться, частные методы, функции и параметры по-прежнему недоступны. – Abizern
Это не работает. – antonio