这个视图控制器以tableView的形势列出想要测试的入口,
并且可以使用本地JSON文件,模拟网络请求
使用说明如下:
http://pan.baidu.com/s/1nts0U9N
代码如下:
#import "BaseViewController.h"
@interface TestBackdoorViewController : BaseViewController
+ (NSDictionary *)getModelFromJsonNamed:(NSString *)name;
@end
//
// TestBackdoorViewController.m
// HongKongAirlines
//
// Created by Realank on 15/9/8.
// Copyright (c) 2015年 BBDTEK. All rights reserved.
//
//本类用于测试入口界面,防止路经过深,影响开发效率
#import "TestBackdoorViewController.h"
#import "YRJSONAdapter.h"
#import "OrderManagerMobileDetailsWrapperModel.h"
#import "RefundNoticeViewController.h"
#import "RefundDetailViewController.h"
#import "PopUpBigViewForNotice.h"
#import "RefundChooseReasonViewController.h"
#import "AnnnualTicketUseDetailViewController.h"
#import "NewAnnualOrderDetailModel.h"
#import "AnnnualUseTicketDetailModel.h"
#import "JPQucikRegister.h"
#define TEST_ITEM_NUM 10;
@interface TestBackdoorViewController ()<UITableViewDataSource,UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end
@implementation TestBackdoorViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.title = @"测试界面用入口";
}
#pragma mark - 用户自定义方法,用于添加测试项
//添加测试测试项,请填写如下两个方法
//给测试项起名,
//确定一个测试测试项的名字,和列表中的位置,然后返回这个名字
-(NSString *)nameForTestItems:(NSInteger)index {
switch (index) {
case 0:
return @"打log测试";
case 1:
return @"打印json字典测试";
case 2:
return @"退票测试入口";
case 3:
return @"测试项4";
case 4:
return @"测试项5";
//以此类推。。。
}
return @"";
}
//响应测试项点击进入的操作,
//创建你的view controller,然后赋值model,推入
-(void)chooseTestItems:(NSInteger)index {
switch (index) {
case 0:
NSLog(@"第一条测试");
return;
case 1:
NSLog(@"获取的json字典:\n%@",[self getModelFromJson]);
return;
case 2:
{
NSLog(@"退票测试入口");
NSError *error;
OrderManagerMobileDetailsWrapperModel *mobileWrapper = [[OrderManagerMobileDetailsWrapperModel alloc] initWithDictionary:[self getModelFromJson] error:&error];
//退款须知
RefundNoticeViewController *noticeVC = [[RefundNoticeViewController alloc] initWithNibName:nil bundle:nil];
noticeVC.mobileWrapModel = mobileWrapper;
//[self.navigationController pushViewController:noticeVC animated:YES];
RefundDetailViewController *refundDetailTVC = [[RefundDetailViewController alloc] initWithNibName:nil bundle:nil];
refundDetailTVC.isNeedDetail = NO;
refundDetailTVC.mobileWrapModel = mobileWrapper;
// refundDetailTVC.contact = self.contact;
[self.navigationController pushViewController:refundDetailTVC animated:YES];
return;
}
case 3:
{
JPQucikRegister *jpRegist = [JPQucikRegister alertView];
[jpRegist show];
return;
}
case 4:
{
RefundChooseReasonViewController *vc = [[RefundChooseReasonViewController alloc]initWithNibName:@"RefundChooseReasonViewController" bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
}
//以此类推。。。
case 5:
{
NewAnnualOrderDetailModel *orderDetailModel = [[NewAnnualOrderDetailModel alloc] initWithDictionary:[self getModelFromJson] error:nil];
AnnnualUseTicketDetailModel *userDetailModel = [[AnnnualUseTicketDetailModel alloc]initWithDictionary:[TestBackdoorViewController getModelFromJsonNamed:@"secondTestModel"] error:nil];
AnnnualTicketUseDetailViewController *useDetailVC = [[AnnnualTicketUseDetailViewController alloc]initWithNibName:@"AnnnualTicketUseDetailViewController" bundle:nil];
useDetailVC.orderNum = orderDetailModel.order.annualOrderNum;
NewAnnualOrderDetailUserInfo *userInfo = orderDetailModel.useInfos[0];
useDetailVC.ticketNo = userInfo.etktNo;
useDetailVC.orderDetail = orderDetailModel;
useDetailVC.userDetailModel = userDetailModel;
[self.navigationController pushViewController:useDetailVC animated:YES];
}
}
NSLog(@"没有人响应这个测试入口");
}
#pragma mark - 工具方法,用于辅助实现测试
//模拟用户获取的json网络数据,将假想的数据放入testModel.json,即可通过
//本函数获得字典数据
- (NSDictionary *)getModelFromJson{
NSString *path = [[NSBundle mainBundle] pathForResource:@"testModel" ofType:@"json"];
NSData *jsonData = [[NSData alloc] initWithContentsOfFile:path];
NSDictionary *modelDict = [jsonData objectFromJSONData];
return modelDict;
}
+ (NSDictionary *)getModelFromJsonNamed:(NSString *)name{
if ([name isEqualToString:@"testModel"]) {
NSLog(@"请不要使用testModel文件,这个是给TestBackdoorViewController私有使用的,请自己创建一个json文件");
return nil;
}
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"json"];
NSData *jsonData = [[NSData alloc] initWithContentsOfFile:path];
NSDictionary *modelDict = [jsonData objectFromJSONData];
return modelDict;
}
#pragma mark - 显示测试入口用的方法,不需要修改
//下面的内容请不要关心,无需修改
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"testcell"];
NSString *title = [self nameForTestItems:indexPath.row];
if (!title || [title isEqualToString:@""]) {
title= [NSString stringWithFormat:@"%ld",(long)indexPath.row];
}
cell.textLabel.text = title;
cell.textLabel.textColor = [UIColor redColor];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self chooseTestItems:indexPath.row];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 44.0f;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return TEST_ITEM_NUM;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end