我如何对协议及其扩展进行单元测试
How do I unit test Protocol and it's extension
我有一个协议并且在扩展中有它的定义。
我想对定义进行单元测试。
我用谷歌搜索,但找不到任何相关内容。
我得到的最接近的是 Mocking with Protocol 或 POP 等。
如果有人能用示例向我解释,那就太好了。
不需要对协议本身进行单元测试,您应该测试符合的类型。如果你有一个协议扩展,你想要测试一些默认行为,那么在你的测试目标中创建一些符合协议的基本结构或 class 并在你的测试中使用它。
这是一个示例,给定以下协议,其中包含一个函数和该函数的默认实现
protocol Example {
func calculate(_ x: Int) -> Int
}
extension Example {
func calculate(_ x: Int) -> Int {
x * 2
}
}
您可以在测试目标中添加一个简单的结构来测试它,因为我们要测试默认实现结构变得非常简单
struct TestExample: Example {}
然后对此的单元测试可能看起来像
func testDefaultCalculation() {
let sut = TestExample()
XCTAssertEqual(2, sut.calculate(1))
}
我有一个协议并且在扩展中有它的定义。
我想对定义进行单元测试。
我用谷歌搜索,但找不到任何相关内容。
我得到的最接近的是 Mocking with Protocol 或 POP 等。
如果有人能用示例向我解释,那就太好了。
不需要对协议本身进行单元测试,您应该测试符合的类型。如果你有一个协议扩展,你想要测试一些默认行为,那么在你的测试目标中创建一些符合协议的基本结构或 class 并在你的测试中使用它。
这是一个示例,给定以下协议,其中包含一个函数和该函数的默认实现
protocol Example {
func calculate(_ x: Int) -> Int
}
extension Example {
func calculate(_ x: Int) -> Int {
x * 2
}
}
您可以在测试目标中添加一个简单的结构来测试它,因为我们要测试默认实现结构变得非常简单
struct TestExample: Example {}
然后对此的单元测试可能看起来像
func testDefaultCalculation() {
let sut = TestExample()
XCTAssertEqual(2, sut.calculate(1))
}