用于端到端测试的库或clojure中的api测试?

时间:2015-03-30 07:28:18

标签: testing clojure integration-testing web-api-testing

嘿伙计们,我打算为我的网络项目和一些移动api添加测试套装。我最终确定Midjeclojure.test以测试每行代码(Unit Testing),

但是我无法找出测试库来测试端到端api。

clj-webdriver或其他更好的选择怎么样??

感谢和感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

我使用clj-webdriver和基于Kerodon的测试的组合:

  • 我使用clj-webdriver来测试需要执行JavaScript的场景。因为这些测试使用真正的浏览器,所以它们很慢,因此任何不需要使用clj-webdriver的场景都不应该使用它。对于基于Compojure的新应用程序,这是a tutorial about setting up clj-webdriver

  • 我使用Kerodon进行所有不需要执行JavaScript的测试。 Kerodon无法启动真正的应用程序服务器和浏览器,因此速度更快。它的灵感来自Ruby的Capybara。对于包含Kerodon API概述的Compojure应用程序,这是a tutorial about setting up Kerodon

这种方法的一个问题是clj-webdriver和Kerodon有不同的API。假设您有一个最初使用Kerodon编写的测试,因为它不需要JavaScript。如果您需要在测试中执行JavaScript,则需要使用clj-webdriver API重新编写它。但这不是一个大问题,但如果有一个项目包含这两个并且支持更改驱动程序选项,那将会很好。或者,如果此功能是Kerodon的一部分。

除了2个API,这种方法对我来说效果很好。

答案 1 :(得分:1)

一种选择是使用ring.mock通过其公开的端点测试您的服务。如果您只是测试对各种请求的API响应,那么这就是我要走的路。

在我目前的项目中,我们使用clj-webdriver通过Web浏览器进行一些测试,这有助于测试我们的UI。虽然我们仍在努力让输出易于解释,但我们编写的测试有助于捕捉回归。我们尽量不要在这些测试中做太多,因为它们很脆弱,并且在测试失败时难以缩小破坏的范围。

答案 2 :(得分:0)

我专门为HTTP API的端到端测试编写了一个Clojure库,它被称为Restpect

这是简单测试的样子:

(deftest create-and-delete-user
  (created (PUT "http://example.com/api/v1/users/john" {:email "john@example.com"}))
  (ok (GET "http://example.com/api/v1/users/john"))
  (ok (DELETE "http://example.com/api/v1/users/john"))
  (not-found (GET "http://example.com/api/v1/users/john")))

它还具有在主体和响应的其他属性上进行复杂断言的功能,以及在测试失败时获取请求和响应上下文的自定义报告器。