小编Loo*_*arn的帖子

有条件地链接方法?

我们如何有条件地在PHP中链接方法?例如,这可以正常工作:

$a->foo()->bar->baz->qux();
Run Code Online (Sandbox Code Playgroud)

但是,根据条件,我想链接一些方法,但不链接其他方法。基本上,缩短以下代码:

if ($cond === true) {
    $a->foo()->baz();
} else {
    $a->foo()->bar();
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,类似以下内容的方法将起作用:

$a->foo()
    ->bar()
    ($cond === true) ? ->baz() : ->qux()
    ->more();
Run Code Online (Sandbox Code Playgroud)

另外,我们如何根据条件有条件地链接一个方法(或不链接)?例如:

$a->foo()
    ->bar()
    if($cond === true) ->baz()
    ->more();
Run Code Online (Sandbox Code Playgroud)

php oop

6
推荐指数
1
解决办法
1483
查看次数

将 swagger-codegen 与多个 swagger 文件一起使用

我们的项目为单个 API 使用多个 swagger 文件,但看起来 swagger-codegen 只接受一个。在这种情况下,我们如何使用 swagger-codegen 生成代码?

swagger swagger-codegen

6
推荐指数
1
解决办法
6758
查看次数

在代码测试中使用变量

我们如何在测试中使用字符串替换和变量?我怀疑这很常见,我根本不知道在哪里看.示例测试:

$I = new ApiTester($scenario);
$I->wantTo('Get Stuff');
$I->amHttpAuthenticated('myuser', 'mypass');
$I->haveHttpHeader('Content-Type', 'application/json');
$I->haveHttpHeader('Custom-Header', 'friendlycorp');
$I->sendGet('/a/path/that/contains/variables');
$I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK);
Run Code Online (Sandbox Code Playgroud)

正在测试的每个REST API位置使用不同的值,并且URL也会根据要测试的服务而更改.所以,也许是这样的:

$I->amHttpAuthenticated('{USERNAME}', '{PASSWORD}');
$I->sendGet('/a/path/{SERVICE_ID}/and/{SOMETHING_ELSE}/and/such');
$I->haveHttpHeader('Custom-Header', '{SERVICE_ID}');
Run Code Online (Sandbox Code Playgroud)

我希望配置文件可以定义类似{SERVICE_ID}和{FUNCTION},具体取决于我正在测试的REST API服务位置以及其他变量.例如:

FriendlyCorp:
    SERVICE_ID: friendlycorp
    SOMETHING_ELSE: foo
    USERNAME: myuser
    PASSWORD: mypass
OpenExample:
    SERVICE_ID: openexample
    SOMETHING_ELSE: bar
    USERNAME: myuser2
    PASSWORD: mypass2
Run Code Online (Sandbox Code Playgroud)

然后在执行代码时,我会选择针对FriendlyCorp或OpenExample运行测试,并且将在测试中使用所述值.

codeception

0
推荐指数
1
解决办法
452
查看次数

标签 统计

codeception ×1

oop ×1

php ×1

swagger ×1

swagger-codegen ×1