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

时间:2018-01-19 18:11:23

标签: ios swift unit-testing codable

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

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
}

但得到错误:"预期声明"

1 个答案:

答案 0 :(得分:0)

您可能希望在初始值设定项中设置此变量:

class mockColorObject: Color {

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

但是,如果您可以更改正在测试的代码,那么定义ColorTypeColor都符合的mockColorObject协议可能是更好的策略,因为为此目的进行了子类化嘲笑会导致问题。