0

我正在使用 Symfony2 构建一个 REST API。我已经与AliceFaker一起使用Liip 捆绑包进行功能测试,以生成所有固定装置。但是,当我想直接测试 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 函数(例如 < firstName() >),当加载夹具时,它会自动用随机但有意义的值填充我的实体。是否可以在这些 YAML 结构中使用它们?

非常感谢!;)

4

1 回答 1

0

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

在 POST 中,数据在正文中,没有参数。(如何在 HTTP POST 请求中发送参数?

尝试

$this->client->request(
    'POST', 
    '/api/application/save/',
    array(), // The Request parameters
    array(), // Files
    array(),
    $postData, // Raw Body Data
    true
);
于 2016-04-13T15:24:23.323 回答