2016-07-20 11 views
0

I OCMock bin mit DataFetcher Klasse zu verspotten:OCMock nicht mock Klasse über Cocoapods enthält

id dataFetcherMock = OCMClassMock([DataFetcher class]); 
OCMStub([dataFetcherMock fetchSetupForCompany:[OCMArg any] 
            completion:[OCMArg any]]).andCall(self, @selector(fetchSetupForCompany:completion:)); 

Es funktioniert gut, wenn DataFetcher ein Teil des Projektes war. Aber dann haben wir DataFetcher auf eine private Cocoapods verschoben. Und das Spotten hörte auf zu arbeiten. Die in andCall definierte Methode wurde nie mehr aufgerufen.

Kann OCMock verwendet werden, um über Cocoapods hinzugefügte Klassen nachzuahmen? Wie kann ich es zum Laufen bringen?

Antwort

0

Ich stellte fest, dass das Problem mit der Art und Weise war, wie ich das Testziel in die Pod-Datei einfügte. Was ich hatte, war:

target 'Service' do 
    pod 'MTDates' 
    pod 'libextobjc' 
    pod 'DataFetcher' 

    target 'ServiceTests' do 
     pod 'OCMock' 
     pod 'OHHTTPStubs' 
    end 
end 

Diese in DataFetcher Klasse führte sowohl Ziel verbunden ist und somit wurde in Laufzeit dupliziert.

I geändert

target 'Service' do 
    pod 'MTDates' 
    pod 'libextobjc' 
    pod 'DataFetcher' 
end 

target 'ServiceTests' do 
    pod 'OCMock' 
    pod 'OHHTTPStubs' 
end 

Dies das Problem behoben.