API 测试应该在哪里进行?
Where should API tests live?
这个问题与 重复,但我想尽可能获得更多信息。
因此,假设您正在编写一个新的 API 路由 /get_something
。现在,理想情况下,您想要测试此端点以确保它正常工作。
让我们考虑这个端点是一个真正的生产端点,它构建起来并不简单:它需要一个特定的身份验证和一个特定的输入列表,这些输入应该在一个具体方式。这意味着一个简单的 http.Get()
调用不会削减它:你需要一个专用函数(例如 client.BuildGetSomethingRequest()
)来调用它。
测试(无模拟)应如下所示:
- 运行 具有不同输入的新 API 请求
- 断言输出与预期输出匹配
这里的问题是这个组件的测试应该在哪里进行?
如果你在后端编写测试(即,路由将被编程的相同代码库),你实际上是在为该 API 路由创建一个客户端(即,类似于 client.BuildGetSomethingRequest()
我们之前讨论过)并且您将在制作前端时 复制 相同的客户端。
另一种选择是在前端的 API 路由中进行功能测试。通过这种方式,您将编写请求构建代码(例如,client.BuildGetSomethingRequest()
)一次,并且还可以获得在前端和后端之间进行健康测试的好处。
我个人更喜欢第二种方法,但它迫使开发人员在两个代码库之间进行操作,并且在一个组件中编写代码,但在另一个组件中进行测试感觉很奇怪。
也就是说,如果后端和前端共享相同的语言 (Javascript),那么将它们耦合是有意义的,但从微服务的角度来看,这是错误的。
伙计们,你们有什么想法?
欢呼和感谢
。关闭是相当主观的,也许聊天室是一个更好的地方。
这个问题与
因此,假设您正在编写一个新的 API 路由 /get_something
。现在,理想情况下,您想要测试此端点以确保它正常工作。
让我们考虑这个端点是一个真正的生产端点,它构建起来并不简单:它需要一个特定的身份验证和一个特定的输入列表,这些输入应该在一个具体方式。这意味着一个简单的 http.Get()
调用不会削减它:你需要一个专用函数(例如 client.BuildGetSomethingRequest()
)来调用它。
测试(无模拟)应如下所示:
- 运行 具有不同输入的新 API 请求
- 断言输出与预期输出匹配
这里的问题是这个组件的测试应该在哪里进行?
如果你在后端编写测试(即,路由将被编程的相同代码库),你实际上是在为该 API 路由创建一个客户端(即,类似于 client.BuildGetSomethingRequest()
我们之前讨论过)并且您将在制作前端时 复制 相同的客户端。
另一种选择是在前端的 API 路由中进行功能测试。通过这种方式,您将编写请求构建代码(例如,client.BuildGetSomethingRequest()
)一次,并且还可以获得在前端和后端之间进行健康测试的好处。
我个人更喜欢第二种方法,但它迫使开发人员在两个代码库之间进行操作,并且在一个组件中编写代码,但在另一个组件中进行测试感觉很奇怪。
也就是说,如果后端和前端共享相同的语言 (Javascript),那么将它们耦合是有意义的,但从微服务的角度来看,这是错误的。
伙计们,你们有什么想法?
欢呼和感谢