为单元测试创​​建模拟数据对象

Creating a mock data object for unit testing

目前我正在尝试对接受数据对象参数的函数进行单元测试:

addColor(_ coreDataManagerContext: NSManagedObjectContext, _ object: Color?) {//code here}

问题是它接受了一个对象:Color? 需要被模拟。 这是原始 Color 模型的样子,它在 Swift 4 中解析:

class Color: Codable {

    var id: String
    var name: String


    enum CodingKeys: String, CodingKey {
        case id = "Id"
        case name = "Name"

    }
}

我想过这样做:

class mockColorObject: Color {

   self.name = "red"//error here
}

但出现错误:"expected declaration"

您可能想在初始化程序中设置此变量:

class mockColorObject: Color {

    required init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        self.name = "red"
    }
}

但是,如果您可以更改被测试的代码,那么定义 ColormockColorObject 都符合的 ColorType 协议可能是更好的策略,因为子类化模拟的目的可能会导致问题。