0

我有一个正在处理的快速项目。

它的后端还没有准备好,所以我想在应用程序中托管服务器,这样我就可以发出请求并将响应存储在应用程序中。

每当用户发出请求时,都会显示模拟的响应。

有没有关于如何做到这一点的教程。

我正在使用 mvvm 架构和 Moya 进行网络调用。

我熟悉进行网络调用并对其进行解析以显示响应。

如果有人能指出将其与应用程序中的模拟服务器连接起来的教程,那就太好了。

任何帮助将不胜感激。谢谢你。

4

2 回答 2

1

您可以考虑尝试构建模型服务器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" }

当您的实际后端准备就绪时,只需将端点替换为真实的。

于 2017-10-26T10:20:00.703 回答
0

您可以将代码注入 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 中对网络代码进行单元测试

于 2020-07-30T03:03:22.473 回答