Как сравнить 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.
}