我使用Codeception与Yii2。我需要用JSON内容体做一个POST请求。我不想使用REST模块,因为我还没有配置它。(这是一个更长的故事……)
我已经能够写我的GET测试精彩。现在第一次POST测试,我卡住了。
- Functional Test中有一个
$I->amOnPage([])
方法,只能做GET请求。 sendAjaxPost
不允许使用POST发送内容正文。$I->sendPOST('api/xyz',"{\"xyz\":1}")
也没有工作,因为Yii没有得到任何路由,所以改为加载主页。路径在调用堆栈中丢失。
1.有一个InnerBrowser->_loadPage
方法,它允许我用所有可配置的方式进行请求,但我找不到访问它的方法。
有什么方法可以从测试中访问InnerBrowser
对象吗?我试过$I->getModule('PhpBrowser')->_loadPage
或$this->getModule('Yii2')
3条答案
按热度按时间gwo2fgha1#
可以使用I->SendAjaxPostRequest,它有一个数组参数,其中包含要与请求一起发送的POST值。
0lvr5msh2#
您可以更新后端代码以接受原始输入和参数,因此您可以在Codeception测试中传递数组并在API中传递原始输入
vmdwslir3#
您必须向测试类添加新的StepAction。这并不难:
in_support/FunctionalTester.php add:
in_support/Helper/Functional.php add:
(将Yii 2更改为您的模块)。
然后在你的测试中: