gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:02:42 25 4
gpt4 key购买 nike

我是 “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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com