unit-testing - MagicalRecord = swift_dynamicCastClassUnconditional 仅在单元测试中

标签 unit-testing swift magicalrecord

我已经研究了好几个小时了。我正在使用 MagicalRecord。应用程序中的一切都很好,但在单元测试中,当我运行以下命令时出现 swift_dynamicCastClassUnconditional 错误

func testExampleQCPerson() {

    let person  = QCPerson.MR_createEntity() as QCPerson //error happens here
    person.displayOrder = NSNumber(integer: 0)

    let personB  = QCPerson.MR_createEntity() as QCPerson
    personB.displayOrder = NSNumber(integer: 0)
    personB.updateOrderForPrevious()

    XCTAssert(person.displayOrder.integerValue == 1, "should have incremented")
}

正如过去的帖子所建议的那样,我需要使我的模型与 @objc(ModelName) objective-c 友好...所以我已经做到了:

import Foundation
import CoreData
@objc(QCPerson)
class QCPerson: NSManagedObject {

  @NSManaged var person_id: NSNumber
  @NSManaged var displayOrder: NSNumber
  @NSManaged var contactRefrence: String
  @NSManaged var name: String
  @NSManaged var actionType: String
}

虽然这会使应用程序的其余部分正常运行,但我真的更希望能够同时进行测试。我会补充,我可以在单元测试中做到这一点

let xx: AnyObject = QCPerson.MR_createEntity() as AnyObject
XCTAssertNotNil(xx, "should exists")

但这对我类(class)的具体需求没有帮助

最佳答案

这也发生在我身上,但我遇到了一些不同的情况,因为我使用的是 ObjC 托管对象子类。由于 swift 中的单元测试需要一些 hack 才能工作,我也将所有文件添加到测试包中,但我应该省略 ObjC 文件,因为它们是通过桥接 header 导入的。

在您的情况下,可能是由于在 xcdatamodel 中指定了错误的类名:看看这个 Unable to find specific subclass of NSManagedObject

关于unit-testing - MagicalRecord = swift_dynamicCastClassUnconditional 仅在单元测试中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810285/

相关文章:

C# stub 。每个可测试对象的接口(interface)?

unit-testing - 是否可以仅通过 cargo 测试运行单元测试?

c# - 集成测试详细

ios - 访问全局类

json - "login"和 "sign up"Web 服务未使用 alamofire 快速提供所需的 json 输出

ios - 如何在没有错误的情况下删除每个核心数据实体?

ios - 使用Kiwi测试MagicalRecord对象时,默认上下文为nil

python - 在 Django/Python 中编写单元测试

swift - 创建一个带有不允许转义函数的参数的 Swift 函数?

iphone - 魔录iCloud更新核心数据