为单元测试创建模拟数据对象
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"
}
}
但是,如果您可以更改被测试的代码,那么定义 Color
和 mockColorObject
都符合的 ColorType
协议可能是更好的策略,因为子类化模拟的目的可能会导致问题。
目前我正在尝试对接受数据对象参数的函数进行单元测试:
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"
}
}
但是,如果您可以更改被测试的代码,那么定义 Color
和 mockColorObject
都符合的 ColorType
协议可能是更好的策略,因为子类化模拟的目的可能会导致问题。