我有一个iOS和Android应用程序,可以触发omniture事件。我通过Charles Proxy捕获这些事件并手动验证这些事件。手动验证需要花费大量时间。有没有办法自动验证omniture事件?它可能会帮助我节省大量时间。
提前致谢
在将Omniture集成到Android应用之前,我感到很痛苦。
Adobe有一个名为Bloodhound的工具可以作为假Omniture服务器使用。
虽然它对自动化没有帮助,但它有助于调试,因为它可以为您分解故事,变量和事件。
如果在ADMS_Measurement和应用程序之间添加一些对象作为抽象层,它可用于验证您希望在测试中发送的所有事件(您需要对此解决方案进行测试)。或者你可以尝试模拟ADMS_Measurement对象,但我从未尝试过这种方法。鉴于对象的结构是这样的
@implementation OmnitureWrapper ()
@property (nonatomic, strong) ADMS_Measurement *admsMeasurement;
- (void)track:(NSDictionary *)trackingVars {
[self setupVariables:trackingVars];
[self.admsMeasurement track];
}
@end
在测试中,您可以创建OmnitureLayer的模拟并使其期望调用 - (void)track:(NSDictionary *)trackingVars并验证参数是否符合预期。例如使用OCMock:
- (void)testActionXShouldSendOmnitureEventsY {
id omnitureMock = [OCMockObject mockForClass:[OmnitureWrapper class]];
[omnitureMock expect] track:[OCMArg checkWithBlock:^BOOL(id obj) {
NSDictionary *trackingVars = (NSDictionary *)obj;
//TODO check if all vars are as expected
}];
//TODO actual test code
[omnitureMock verify];
}
您需要为将导致Omniture跟踪的每个事件编写测试,然后验证它是否被正确调用,但如果这对您很重要,那么从长远来看它可能会得到回报。
我找到的唯一可靠方法是在测试运行期间向设备/模拟器上的临时目录中发送请求之前,从Adobe SDK转换事件数据。然后,您的测试可以访问此文件并在测试脚本中声明其数据。