考虑一个 Rails 应用程序,它使用与 Rails 应用程序分开开发的(Sinatra 应用程序)API。我想从 Rails 测试中测试 API 调用。
API 代码:
post '/foo/create' do
...
我创建了一个模拟,但这没有意义,因为它只是 API 文件的副本。臭死了。
可以在测试中要求 API 文件。但是如何从 RSpec 中调用它呢?Rails 应用程序中没有针对它的路线。
一种选择是启动 API 并从 Rails 测试中进行 HTTP 调用,但这很糟糕,因为:
- 您必须启动 API 服务器才能运行 Rails 测试
- 为什么 Rails 测试应该发出 HTTP 请求?Rack::Test 模拟了这一点。
- 我认为这不会起作用,因为这些应用程序具有不同的测试数据库,但共享相同的生产数据库。
编辑:测试的重点是 API 调用会创建 Rails 应用程序所期望的记录。所以 Rails 应用需要在 API 调用后测试数据库的状态。