php – 如何使用Codeception来测试laravel 5 API?

php – 如何使用Codeception来测试laravel 5 API?,第1张

概述我是Codeception的新手,我正在尝试测试我使用Laravel 5构建的Web服务.我遵循指南 here. 所以我创建了一个名为api的套件: codecept generate:suite api api.suite.yml class_name: ApiTestermodules: enabled: - REST: url: http:/ 我是Codeception的新手,我正在尝试测试我使用Laravel 5构建的Web服务.我遵循指南 here.

所以我创建了一个名为API的套件:

codecept generate:suite API

API.suite.yml

class_name: APITestermodules:    enabled:        - REST:            url: http://localhost:8000/API/            depends: Laravel5

AuthenticateUserCept.PHP

<?PHP $I = new APITester($scenario);$I->wantTo('authenticate a user');$I->havehttpheader('Content-Type','application/x-www-form-urlencoded');$I->sendPOST('/authenticate',[    'username' => 'archive','email' => '[email protected]','password' => 'password']);$I->seeResponseCodeIs(200);$I->seeResponseIsJson();

我已经使用Postman尝试了这个并且运行正常. / authenticate路由获取3个参数并愉快地吐出JWT令牌,但我无法使其与Codeception一起使用.

1) Failed to authenticate a user in AuthenticateUserCept (tests/API//AuthenticateUserCept.PHP) Step  I see response code is 200 Fail  Failed asserting that 500 matches expected 200.Scenario Steps: 3. $I->seeResponseCodeIs(200) 2. $I->sendPOST("/authenticate",{"username":"archive","email":"[email protected]","password":"password"}) 1. $I->havehttpheader("Content-Type","application/x-www-form-urlencoded")

我哪里错了?而且我仍然很模糊我如何重构这个特定的测试,以便为我做的其他请求有一个JWT.任何帮助表示赞赏.

编辑API.suite.yml中的更改

class_name: APITestermodules:    enabled:        - REST:            url: http://localhost:8000/API/            depends: Laravel5    config:         Laravel5:            environment_file: .env.testing
解决方法 在我回答之前,有些评论:

>在API.suite.yml中的启用行上我包括:enabled:[PHPbrowser,REST,APIHelper,Asserts].
> REST行中的URL对API套件没有任何影响,它通常仅用于接受套件.这应该通过路由直接进入你的代码,而不是使用PHPbrowser模式或类似的地方进行http调用.
>您可以使用Laravel5模式而不是使用Phrabrowser模式 – 前者将通过中间件发送请求,如果APP_ENV设置为测试,Laravel5模式将不会通过中间件发出请求.

就如何解决这个问题而言,我首先要弄清楚代码正在做什么来吐出500错误.您可能要做的一件事是尝试在代码中插入一些调试/日志行.另一件事是将这样的行放入测试用例:

$I-> seeResponseContains( ‘blablabla’);

当然这会失败,但它会在tests / _output目录中产生一个输出,这样你就可以准确地看到代码给出的响应以及500错误(当然你需要在测试200之前执行此步骤)条件,否则你的测试将在那一步拯救).

测试用例中此类错误的一个常见原因是验证应用于传递给控制器​​方法的自定义Request类.如果验证失败,则控制器方法不会被命中,您将得到500错误而无法在控制器中调试它.我认为这种类型的自定义Request类是个坏主意.

另一种可能的探究方法是构建一个测试相同路径的功能测试.通过Laravel5辅助模块进行的功能测试通常更容易实现并进行调试.一旦你进行了基本的功能测试并解决了你遇到的任何问题,那么API测试的工作就更容易了.

总结

以上是内存溢出为你收集整理的php – 如何使用Codeception来测试laravel 5 API?全部内容,希望文章能够帮你解决php – 如何使用Codeception来测试laravel 5 API?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1246318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存