我有一个正在处理的快速项目。
它的后端还没有准备好,所以我想在应用程序中托管服务器,这样我就可以发出请求并将响应存储在应用程序中。
每当用户发出请求时,都会显示模拟的响应。
有没有关于如何做到这一点的教程。
我正在使用 mvvm 架构和 Moya 进行网络调用。
我熟悉进行网络调用并对其进行解析以显示响应。
如果有人能指出将其与应用程序中的模拟服务器连接起来的教程,那就太好了。
任何帮助将不胜感激。谢谢你。
您可以考虑尝试构建模型服务器JSON 服务器吗
您可以在那里创建自己的 JSON 格式,例如:
{
"posts": [
{ "id": 1, "title": "json-server", "author": "typicode" }
],
"comments": [
{ "id": 1, "body": "some comment", "postId": 1 }
],
"profile": { "name": "typicode" }
}
然后启动服务器:
json-server --watch db.json
最后,您可以使用 REST 端点 http://localhost:3000/posts/1查询数据并获取:
{ "id": 1, "title": "json-server", "author": "typicode" }
当您的实际后端准备就绪时,只需将端点替换为真实的。
您可以将代码注入 Foundation 的 URL 加载系统并编写自定义 HTTP 处理程序。子类URLProtocol
化并实现它,以便为后端应该处理的某些 URL 请求实例化类的对象。
例如
public class TestProtocolHandler: URLProtocol {
// ...
override public class func canInit(with task: URLSessionTask) -> Bool {
guard let request = task.currentRequest else {
return false
}
guard let url = request.url else {
return false
}
// return `true` if your class can handle the `url`.
}
// ...
override public func startLoading() {
guard let client = self.client else {
return
}
// call methods in `client` as a result of URL loading
}
}
class YourTestCase: XCTest {
// use this alternative URLSession for your network clients in test mode
func makeSession() -> URLSession {
let config = URLSessionConfiguration.ephemeral
config.protocolClasses = [
TestProtocolHandler.self
]
return URLSession(configuration: config)
}
}
此博客文章中的更多详细信息:如何在 Swift 中对网络代码进行单元测试。