【问题标题】:Symfony2 API test POST using YAML/FakerSymfony2 API 测试 POST 使用 YAML/Faker
【发布时间】:2016-08-04 19:07:27
【问题描述】:

我正在使用 Symfony2 构建一个 REST API。我已经在使用Liip bundle 进行功能测试,并使用AliceFaker 来生成所有固定装置。但是,当我想直接测试 POST 调用自己时,只要 JSON 包含在 POST 数据中,我就没有什么麻烦了,这使我的函数变得很长、丑陋且不可读。

我决定将假 JSON 移出类,将它们转换为 YAML 文件,然后使用 Symfony 的解析器加载它们:

private function loadYaml($resource){
        $data = Yaml::parse(file_get_contents('src/AppBundle/DataFixtures/YAML/' . $resource . '.yml'));
        return $data;
}

这似乎工作得很好,因为我可以轻松地将它们转换回 JSON 对象,然后在调用中使用它:

$postData = json_encode($this->loadYaml('newapplication'));
$this->client->request(
    'POST', 
    '/api/application/save/',
    array('data' => $postData), // The Request parameters
    array(), // Files
    array(),
    'mybody', // Raw Body Data
    true
);

我的第一个问题是:这是正确的方法吗?是否有任何我错过的捆绑包可以让我的生活更轻松?

我的第二个问题是在这个 YAML 结构中是否可以使用 Faker。在我的夹具上,我调用 Faker 函数(例如 ),当加载夹具时,它会自动用随机但有意义的值填充我的实体。是否可以在这些 YAML 结构中使用它们?

非常感谢! ;)

【问题讨论】:

    标签: api symfony yaml fixtures alice


    【解决方案1】:

    对于你关于 bundle 的问题,来自 Symfony\Bundle\FrameworkBundle\Test\WebTestCase 的 WebTestCase 非常适合在 Symfony 项目中对 REST API 进行测试。

    在 POST 中,数据在正文中,没有参数。 (How are parameters sent in an HTTP POST request?)

    试试

    $this->client->request(
        'POST', 
        '/api/application/save/',
        array(), // The Request parameters
        array(), // Files
        array(),
        $postData, // Raw Body Data
        true
    );
    

    【讨论】:

    • 在我们的应用程序中,数据是在请求参数中发送的。我正在使用 Liip Bundle 中的 WebTestCase,它添加了一些有趣的功能。
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 2011-09-17
    • 2013-09-19
    • 2019-09-07
    • 2018-10-23
    • 2016-04-18
    • 1970-01-01
    • 2019-07-30
    相关资源
    最近更新 更多