2

我想比较 UI 中的文本和使用 KIF V3.0 从 WebService 获得的内容。我知道如何在 KIF 1.0 中进行比较,但我不知道 KIF V3.0。

对于 V1.0

+(id)stepToverifyOutput:(NSString *) expectedLabel 可访问性:(NSString *)mylabel

{

NSString *description = [NSString stringWithFormat:@"Verify label text for %@",expectedLabel];
return [self stepWithDescription:description executionBlock:^(KIFTestStep *step, NSError **error) {
    UIAccessibilityElement *element = [[UIApplication sharedApplication] accessibilityElementWithLabel:mylabel];

    BOOL isValid;
    UINavigationController *navbar;
    UILabel *lblName;

    if([element isKindOfClass:[UILabel class]]){
        isValid=YES;
        lblName = (UILabel *)[UIAccessibilityElement viewContainingAccessibilityElement:element];;
        if ([expectedLabel isEqualToString:lblName.text]) {
            return KIFTestStepResultSuccess;
        }
    }else{
        isValid=NO;
         navbar = (UINavigationController *)[UIAccessibilityElement viewContainingAccessibilityElement:element];;
        if ([expectedLabel isEqualToString:navbar.title]) {
            return KIFTestStepResultSuccess;
        }
    }
    KIFTestCondition(NO, error, @"Failed to compare the label text: expected '%@', actual '%@'", expectedLabel,(isValid)?lblName.text:navbar.title);
}];

}

请帮帮我。我被困在这个地方。

4

2 回答 2

2

KIF 的[tester waitForViewWithAccessibilityLabel:myLabel]方法返回实际视图本身,然后您可以使用它来断言。例如:

NSString *accessibilityLabel = @"yourLabel";
NSString *expectedValue = @"whateveryouexpect";

UILabel *label = (UILabel*)[tester waitForViewWithAccessibilityLabel:accessibilityLabel];
XCTAssert([label.text isEqualToString:expectedValue], @"BADONKADONK");

你不需要为它运行一个完整的步骤。这还具有更具可读性和直接性的优点:获取标签,确保其文本值符合预期。如果未找到该值,则测试自然会失败。

于 2015-01-14T01:47:55.817 回答
1

我认为我的问题是正确的。如果只有这样,您将面临与字符串进行比较的问题,那么您可以直接通过您的自定义代码,例如:

if (yourFirstString isEqualTo:YourSecondString)

  {
       //Text Matches.
  }

别的

 {
      //Text not matches.
 }
于 2015-01-14T09:07:16.260 回答