Как сравнить TextFrom с пользовательским интерфейсом и текстом, полученным от веб-службы в KIF 3.1.1?

Я хочу объединить текст из пользовательского интерфейса и то, что я получаю от WebService, используя KIF V3.0. Я знаю, как сравнивать в KIF 1.0, но KIF V3.0 я не знаю.

Для V1.0

+ (id) stepToverifyOutput: (NSString *) ожидаемая доступность метки: (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);
}];

}

Пожалуйста, сделайте все необходимое для меня. Я застрял в этом месте.

2 ответа

Решение

КИФ-х [tester waitForViewWithAccessibilityLabel:myLabel] Метод возвращает само фактическое представление, которое затем можно использовать для подтверждения. Так, например:

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

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

Вам не нужно делать целый шаг для этого. Это также имеет то преимущество, что он гораздо более читабелен и понятен: получите метку, убедитесь, что ее текстовое значение соответствует ожидаемому. Если значение не найдено, то тест, естественно, не пройден.

Я думаю, я правильно понял ваш вопрос. Вы сталкиваетесь с проблемой сравнения со строкой, если это только тогда, то вы можете напрямую использовать свой собственный код, например:

if (yourFirstString isEqualTo: YourSecondString)

  {
       //Text Matches.
  }

еще

 {
      //Text not matches.
 }
Другие вопросы по тегам