面试题答案
一键面试- 创建Mock对象:
- 首先定义一个遵守
NetworkService
协议(假设NetworkService
是基于协议的,若不是则继承NetworkService
类)的Mock类。 - 示例代码:
- 首先定义一个遵守
class NetworkServiceMock: NetworkService {
var mockData: Data?
var mockError: Error?
func fetchData(completion: @escaping (Data?, Error?) -> Void) {
completion(mockData, mockError)
}
}
- 在测试中使用Mock对象:
- 在测试类中创建
NetworkServiceMock
的实例,并设置mockData
和mockError
。 - 将Mock对象传递给需要测试的类(假设这个类依赖
NetworkService
)。 - 示例测试代码:
- 在测试类中创建
import XCTest
class MyViewControllerTests: XCTestCase {
func testNetworkCall() {
let networkMock = NetworkServiceMock()
let expectedData = "Mocked data".data(using:.utf8)
networkMock.mockData = expectedData
// 假设MyViewController依赖NetworkService
let viewController = MyViewController(networkService: networkMock)
// 触发网络请求相关操作
viewController.fetchSomeData()
// 断言数据是否正确接收等相关测试
XCTAssertEqual(viewController.receivedData, expectedData)
}
}
在上述代码中,MyViewController
是依赖NetworkService
的视图控制器类,fetchSomeData
方法触发网络请求。通过设置NetworkServiceMock
的mockData
,可以模拟网络请求成功返回的数据,若要模拟错误,设置mockError
即可。