【问题标题】:swift Xcode unit test: Cannot convert value of type "Person" to expected argument type "Person"swift Xcode单元测试:无法将“Person”类型的值转换为预期的参数类型“Person”
【发布时间】:2015-10-21 03:25:13
【问题描述】:

我正在尝试编写一个单元测试类来测试我的自定义类。当我尝试使用自定义对象作为输入变量调用自定义类中的方法时,我得到: '无法将“Person”类型的值转换为预期的参数类型“Person”。 “Person”是类,继承自 NSManagedObject,输入对象是从其中创建的。我对采用其他值类型的其他方法没有任何问题。该方法工作正常。测试班是唯一抱怨这一点的人。这是错误还是限制?有什么建议可以让我更深入地研究这个问题吗?

【问题讨论】:

  • 可能是命名空间问题。在您的核心数据模型中,当您选择 Person 实体时,您是否在身份检查器中指定了模块名称?这可能具有 .Person 的形式。如果是这样,请尝试将其删除并将其留空。
  • 谢谢。我终于想通了。在测试类中,对象没有像正常情况下那样正确创建。我被错误信息误导了。

标签: xcode swift unit-testing


【解决方案1】:

我之前遇到过这个问题。事实证明,被测系统(在我的例子中,它是一个调用对象的服务;可能是您的示例中的 PersonService)没有 Target 对测试项目的成员资格。我只是单击了 .swift 文件,并确保检查了主项目和测试项目。

希望这会有所帮助!

【讨论】:

  • 谢谢。我也会检查一下。
  • 在我的例子中,问题是有问题的对象在框架和服务中都有目标成员资格。但是,它只需要框架中的目标成员身份,因为服务导入了框架。
  • @Andrew 谢谢!对我来说就是这样。我的主要项目目标文件也针对我的测试,并使用“@testable”导入它们。主项目文件应该只针对主项目,反之亦然。
  • @Andrew 你救了我的命,你能用这个答案再次回答我最近的帖子吗?
猜你喜欢
  • 2020-12-04
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多