如何在Symfony 2中使用Behat和Mink测试REST API

时间:2015-10-26 20:34:01

标签: php rest symfony behat mink

我正在Symfony中构建一个REST API,我想用Behat测试它(使用Mink和symfony2的behat扩展)。对于GET方法没有问题,我只是“模拟”一些数据库对象,使用“我在”步骤定义并检查响应。

但是,当测试某个元素的帖子是否有效时,我不知道如何使用Mink发送post params。我知道可以用Guzzle来完成,但我认为通过Mink和Symfony扩展会更好。

我正在寻找的是定义诸如

之类的步骤的方法
When I POST to <url> the following data:
| field1 | field2 | field3 |
| value1 | value2 | value3 |

有没有简单的方法使用Mink发送它?谢谢!

1 个答案:

答案 0 :(得分:11)

你应该这样做:

File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\core\handlers\base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\views\generic\base.py" in view
  71.             return self.dispatch(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\views\generic\base.py" in dispatch
  89.         return handler(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\views\generic\list.py" in get
  159.         self.object_list = self.get_queryset()
File "C:\Users\user\Desktop\xxxx\views.py" in get_queryset
  90.             start_date = datetime.strptime(form.cleaned_data['start_date'], '%Y%m') # format is like 201012

Exception Type: TypeError at /result_list/
Exception Value: must be string, not datetime.date

这就是mink仅使用get而不是post

用于$session->getDriver()->getClient()->request ('POST', $url, $postdata); 方法的方法