首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试fcgi脚本?

如何测试fcgi脚本?
EN

Stack Overflow用户
提问于 2019-09-27 07:17:54
回答 1查看 200关注 0票数 0

我是个新手,所以如果这听起来很天真,请原谅我。我用fastcgi++写了一个脚本。我测试了基本的用例。但是,就像一个优秀的软件工程师,我想要测试脚本,每次我做一个改变,以确保我不会破坏的东西。

我以前就是这么做的:

这是我的目录结构:

代码语言:javascript
复制
script:

 - bin 
 - build (contained the bash script to compile the script)
 - src
 - tests  
    - build (contained bash script to compile the test)
    - src (contained the test file)
    - output

我黑了我测试的方式。我过去经常使用curl调用我的脚本,并将其输出重定向到测试/输出中的文件(使用相对路径),并将其与预期的输出进行比较。我可以这样做,因为测试是手工编译的,并且只有在将目录更改为tests/build之后才执行测试。我最近决定使用一个构建系统。我选择了介子。使用介子进行测试的方法是运行meson testninja test。问题是,现在我无法控制测试的运行位置。

在这种情况下如何进行测试?你是如何测试你的fcgi脚本的?

编辑:,这是我编译和测试的一个例子。这是一个完整的可验证示例:

代码语言:javascript
复制
#include <fastcgi++/request.hpp>
#include <fastcgi++/manager.hpp>

class test : public Fastcgipp::Request<char> 
{
    bool response() {
        nlohmann::json output;

        out << "Content-Type: application/json; charset:utf-8\r\n\r\n";
        out << "{\"success\": true}";
    }
}

int main() {
    Fastcgipp::Manager<test> manager;

    manager.setupSignals();
    manager.listen();
    manager.start();
    manager.join();
}   

你可以认为回应是主要的。这就是你开始处理事情的地方。你可以拿投入,输出和所有的好东西。

我就是这样测试的:

代码语言:javascript
复制
TEST(test, test1) {

    std::string fileName = "test.txt";

    nlohmann::json input, output;
    input["success"] = true;

    std::system(std::string("curl -X GET \"localhost/cgi-bin/test.fcg\" > " + fileName).c_str());

    std::ifstream file(fileName);
    std::string out;
    std::getline(file, out);

    output = nlohmann::json::parse(out);

    ASSERT_EQ(input, output);

    std::system(std::string("rm " + fileName).c_str());
}

注释: nlohmann::json是一个json解析器,我在测试中使用测试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-27 20:40:56

问题是,现在我无法控制测试的运行位置。

默认情况下,测试在构建目录中运行,但是有参数workdir (参见参考文献),您可以使用该参数设置绝对路径,该路径将用作测试的工作目录,例如:

代码语言:javascript
复制
exe = executable(...)
wdir = join_paths(meson.current_source_dir(), 'some_dir')
test('basic', exe, workdir : wdir)

检查介子对象是否有其他可能的引用目录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58129656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档