Как получить доступ к файлу swift из целевого файла, когда они оба находятся в модуле тестирования? - PullRequest
2 голосов
/ 03 июля 2019

Эта проблема может все еще сбивать с толку многих людей, но пока нет ответа на этот вопрос.

У меня есть 2 файла, оба находятся в каталоге Unit Test.
1. Быстрое расширение NSError. Давайте назовем это NSErrorExtension.swift . Это расширение содержит несколько статических методов.
2. объективный тестовый класс C, назовем его UnitTest1.m .

Теперь я хочу получить доступ к статическим методам в NSErrorExtension.swift из UnitTest1.m . Как мне это сделать? Это просто говорит мне, что "Нет известных методов класса для селектора ...." Я перепробовал много решений, ни одно из них не работает.

1 Ответ

0 голосов
/ 03 июля 2019

столкнуться с той же проблемой, кажется, MyAppTests-Swift.h не очень "импортируемо":)

Мне пришлось прибегнуть к некоторым не очень хорошим обходным путям, чтобы сделать эту работу. Для создания экземпляра класса я использовал NSClassFromString(), а затем привел к протоколу, видимому на стороне Objective-C. Для вашего расширения вы можете сделать что-то подобное, объявив методы в заголовочном файле, фактически не реализуя их.

Итак, если ваше расширение NSErrorExtension.swift выглядит так:

extension NSError {
    @objc func someFunc() -> SomeResult
}

, вы можете создать файл NSErrorExtension.h (без соответствующего .m):

@interface NSError (UnitTestExtensions)
- (SomeResult *)someFunc;
@end

Это должно сделать функцию доступной на стороне Objective-C. Недостатком является то, что вам нужно будет делать это для каждой функции, которую вы хотите показать со стороны Swift модульных тестов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...