Wenn Sie eine Objekt als Abstraktionsschicht zwischen ADMS_Measurement und Ihrer Anwendung hinzufügen, kann es verwendet werden, um alle Ereignisse zu überprüfen, die Sie in Tests erwarten (Sie müssten Tests für diese Lösung haben). Alternativ könnten Sie versuchen, das ADMS_Measurement-Objekt zu mocken, aber ich habe diesen Ansatz noch nie ausprobiert. Angenommen, das Objekt ist so strukturiert
@implementation OmnitureWrapper ()
@property (nonatomic, strong) ADMS_Measurement *admsMeasurement;
- (void)track:(NSDictionary *)trackingVars {
[self setupVariables:trackingVars];
[self.admsMeasurement track];
}
@end
In Tests können Sie ein Mock-Objekt von OmnitureLayer erstellen und erwarten, dass es den Aufruf von -(void)track:(NSDictionary *)trackingVars erwartet und überprüft, ob die Parameter wie erwartet waren. Zum Beispiel mit OCMock:
- (void)testActionXShouldSendOmnitureEventsY {
id omnitureMock = [OCMockObject mockForClass:[OmnitureWrapper class]];
[omnitureMock expect] track:[OCMArg checkWithBlock:^BOOL(id obj) {
NSDictionary *trackingVars = (NSDictionary *)obj;
//TODO überprüfen, ob alle Variablen wie erwartet sind
}];
//TODO tatsächlicher Testcode
[omnitureMock verify];
}
Sie müssen Tests für jedes Ereignis schreiben, das Omniture-Tracking auslösen wird, und dann überprüfen, ob es korrekt aufgerufen wurde, aber wenn dies für Sie wichtig ist, kann es sich langfristig auszahlen.