Библиотека Cocoapods неправильно возвращает isKindOfClass во время модульных тестов

У меня есть библиотека, которую я установил с помощью Cocoapods (ECSlidingViewController). В коде сравнение выполняется с помощью -isKindOfClass. В отладчике при печати описаний и всего прочего говорится, что эта переменная является ECSlidingViewController. Однако, когда код работает, он возвращает НЕТ.

В настоящее время у меня есть подфайл, связывающий библиотеки как с основной целью, так и с тестовой целью. Если я этого не сделаю, тестовая цель не сможет найти библиотеки.


person s73v3r    schedule 31.12.2013    source источник
comment
Существуют условия, при которых вы можете иметь две копии одного и того же класса. Однако не помните многих подробностей.   -  person Hot Licks    schedule 01.01.2014
comment
В порядке. Любые предложения о том, как это исправить, или что еще сделать?   -  person s73v3r    schedule 02.01.2014
comment
Ну, вы можете получить имя класса и сравнить его. Другая вещь, которую нужно сделать, — это каким-то образом организовать выполнение теста в модуле, где создается объект.   -  person Hot Licks    schedule 02.01.2014


Ответы (1)


Этот ответ решил эту проблему для меня https://stackoverflow.com/a/27165120/2777364.

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

target 'MainTarget' do
    pod 'PodYouTryToTest'
end

target 'Tests' do
    pod 'AtLeastOneOtherPod'
end

Ответ выше - «Правильный путь» решения этой проблемы. В качестве быстрого обходного пути могу предложить метод:

Class getBundleDependentClass(Class class) { 
     return NSClassFromString(NSStringFromClass(class)); 
}
person Tomasz Bąk    schedule 16.01.2015
comment
это решило проблему для меня. Мой подфайл: target 'Rentalia-iOS', :exclusive =› true do pod 'RestKit', '~› 0.24.0' end target 'Rentalia-iOSTests', :exclusive =› true do pod 'OCMockito', '~ › 1,0' конец - person Pauls; 10.02.2015