测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | 自定义 |
发布最后发布 | 2016年1月 |
由Mike Rhodes维护。Mike Rhodes.
MRDatabaseContentChecker 是一个小型库,可简化在测试中对数据库内容进行检查,并使其更加可读。它试图不干扰您的操作,使编写繁琐的检查变得更简单、更不容易出错。
您可以对表或查询的内容进行测试。
MRDatabaseContentChecker 要求您使用 FMDB。
您可以选择检查数据库表的全部内容,或查询的结果(因为它们都是类似表的结构)。
以下是最简单的示例,使用了SenTest:
FMDatabase *db = [...];
MRDatabaseContentChecker *dc = [[MRDatabaseContentChecker alloc] init];
NSError *validationError;
NSArray *expectedRows = @[
@[@"first_name", @"surname"], // first array is column headers
@[@"Mike", @"Rhodes"], // expected data starts in row 2
@[@"John", @"Smith"] // and continues...
];
STAssertTrue([dc checkDatabase:db
table:@"users"
hasRows:expectedRows
error:&validationError],
[dc formattedErrors:validationError]);
本质上
-checkDatabase:table:hasRows:error:
。NO
,则使用 -formattedErrors
辅助函数打印失败的测试。以下示例可以重写为使用查询而不是表名
FMDatabase *db = [...];
MRDatabaseContentChecker *dc = [[MRDatabaseContentChecker alloc] init];
NSError *validationError;
NSArray *expectedRows = @[ /* as before */ ];
STAssertTrue([dc checkDatabase:db
query:@"select first_name, surname from users;"
hasRows:expectedRows
error:&validationError],
[dc formattedErrors:validationError]);
目前,不支持占位符;您在测试中生成 SQL。如果没有,请随时打开 PR,因为我并不特别反对包含更多功能。
ORDER BY
子句。-checkDatabase:table:hasRows:error:
和 -checkDatabase:query:hasRows:error:
检查
如上所示,期望值作为数组的数组传递。每个期望值都会根据其类型与其在结果集中的对应项进行比较。允许的类型有:
使用不受支持的类型(或不是支持类型子类的类)将导致检查值失败。
您可以为给定列的预期值传递不同的数据类型
expectedRows = @[
@[@"name", @"github_username", @"age"],
@[@"Mike Rhodes", @"mikerhodes", @30],
@[@"John Smith", [NSNull null], @27]
];
MRDatabaseContentChecker依赖于
Michael Rhodes, [email protected]
MRDatabaseContentChecker在Apache v2许可下可用。有关更多信息,请参阅LICENSE文件。