gpt4 book ai didi

http - 如何测试 mochiweb 应用程序?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:20:18 28 4
gpt4 key购买 nike

我想对我的 mochiweb 应用程序进行高级测试,就像可以在 Python 中使用 WebTest,在 Django 中使用测试客户端,在 Ruby on Rails 中使用功能或集成测试一样。我不太挑剔怎么做。基本上我只想发送或模拟 HTTP 请求并对结果进行断言。

我重构了我的代码,这样我的请求处理程序就不会自己调用 Req:respond(),而是返回一个元组 {Code, Headers, Body}。这允许我构建虚拟请求mochiweb_request:new(),将它们传递给我的请求调度程序并使用 EUnit 对结果进行断言:

make_request(Method, Path) ->
Request = mochiweb_request:new(nil, Method, Path, {1, 1},
mochiweb_headers:make([{"Accept", "text/html"}])),
Response = myapp:dispatch(Request),
Response.


signin_test() ->
{Code, _, _} = make_request('GET', "/signin"),
?assertEqual(Code, 200),
ok.

现在我的问题是如何测试 POST 请求。我没有在 mochiweb 中找到任何允许我这样做的东西。从阅读 mochiweb 代码来看,似乎当 Req:parse_post() 被调用时,它会触发对套接字的读取。我在 src/mochiweb.erl 中找到了一些有趣的测试代码.显然,这涉及构建 HTTP 消息、将它们写入套接字并读回响应。我试图在我自己的测试代码中这样做,但几个小时后我没能成功。我开始怀疑我是否正朝着正确的方向前进。也许我需要将更多功能与 HTTP 管道分离,即。不要从我的请求处理程序中调用 Req:parse_post()。我想到的另一个解决方案是使用第三方网络测试库,不一定要用 Erlang 编写。也许是 Ruby 或 Python 中的某些东西,甚至可能是 Selenium。

那么您会推荐什么解决方案来对 mochiweb 应用程序进行功能或集成测试?

最佳答案

我们主要将测试与 HTTP 管道分离。无论如何,通常在功能环境中做正确的事情。

src/mochiweb_multipart.erl 中有一些 eunit 代码可能与您的特定用例更相关。

关于http - 如何测试 mochiweb 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4571197/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com