ios - 从另一个类设置 UITextField 的文本

标签 ios objective-c unit-testing uitextfield

我是 “iOS” 的初学者,从这个问题中就会清楚!!我正在为我的 iOS 应用编写单元测试。我正在尝试从测试类 设置UITextField。每次我从测试用例 设置用户名 textfield 文本时,它都会返回null。我没有办法做到这一点吗?我真的不想更改我的 Controller 类中的代码来进行测试!

除了使用@synthesize(我认为在“iOS7”中不需要)之外,所有在线示例都创建了一个类的实例并设置如下文本,为什么返回 null

Controller.h 中的代码:

 @property (nonatomic, retain) IBOutlet UITextField *username;

测试用例类:

  SignUpViewController *viewController = [[SignUpViewController alloc]init];
viewController.username.text = @"username@example.com";
username.text =null

最佳答案

由于您的属性是使用 IBOutlet 声明的,因此我假设您正在为您的 View 使用 Storyboard。如果是这种情况,那么这不是 textField 的 text 为 nil 的问题,而是整个 textField 为 nil 的问题。

当从 Storyboard 中加载 View Controller 时,所有 IBOutlet(前提是它们正确连接)都会为您初始化。运行单元测试时,没有与 Storyboard的交互,因此您的 textField 不会被初始化。

要解决这个问题,您可以自己创建和分配 textField:

SignUpViewController *viewController = [[SignUpViewController alloc]init];
viewController.username = [[UITextField alloc] init];
viewController.username.text = @"username@example.com";

或者,更好的是,您可以查看 OCMock ,并在您的单元测试中创建和分配一个模拟文本字段。

关于ios - 从另一个类设置 UITextField 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23397209/

相关文章:

ios - 使用 MKPolyline 在 MKMapView 中绘制多组线

c# - Specflow 未在 Visual Studio 2019 中执行测试

unit-testing - 功能复杂的TDD如何应用?

ios - 如何在休息套件中解析此响应?

iOS 低功耗蓝牙连接

ios - 什么值会在文本字段上显示为无穷大?

objective-c - Paypal 状态待处理

java - Spring Boot 1.4 单元测试 Hibernate 验证 WebMvcTest

ios - 在没有 iOS 设备的情况下生成我的 Xamarin 应用程序的 IPA 文件

ios - 动态调整单元格大小时如何获取 UITableView 的高度?