関数をクロージャから通常の関数に移動する方法
<p>害虫テスト ファイルを読みやすくしようとしています。 </p>
<p>現在、いくつかの標準テストがあります: </p>
<pre class="brush:php;toolbar:false;">test('購読者の最新の購読を取得できます', function () {
$this->seed(PlansTestSeeder::class);
$this->seed(SubscriptionsTestSeeder::class);
$this->assertDatabaseCount('plans', 2);
$this->assertDatabaseCount('サブスクリプション', 0);
サブスクリプション::factory()->create([
"plan_id" => Plan::where("slug", "bronze")->first()->id
]);
サブスクリプション::factory()->create([
"plan_id" => Plan::where("slug", "silver")->first()->id
]);
サブスクリプション::factory()->create([
"plan_id" => Plan::where("slug", "silver")->first()->id,
"ステータス" => "期限切れ"
]);
サブスクリプション::factory()->trashed()->create();
$this->assertDatabaseCount('サブスクリプション', 4);
});
test('サブスクライバのアクティブなサブスクリプションを取得できます', function () {
$this->seed(PlansTestSeeder::class);
$this->seed(SubscriptionsTestSeeder::class);
$silverPlan = Plan::where("ナメクジ", "シルバー")->first();
$subscription1 = サブスクリプション::factory()->create([
"plan_id" => Plan::where("slug", "silver")->first()->id,
"subscriber_id" => 1、
"subscriber_type" => "ApresourcingFramework\Billing\Tests\Models\Subscriber",
"created_at" => now()->subDays(2)、
"started_at" => now()->subDays(2)
]);
$subscription2 = サブスクリプション::factory()->create([
"plan_id" => $silverPlan->id、
"subscriber_id" => 1、
"subscriber_type" => "ApresourcingFramework\Billing\Tests\Models\Subscriber",
"created_at" => now()->subDays(1)、
"started_at" => now()->subDays(1)
]);
$user = サブスクライバー::find(1);
$subscription = $user->latestSubscription();
Expect($subscription->id)->toBe($subscription2->id);
});</pre>
<p>しかし、どのテストを書いたかを思い出すために、ページを何度も上下にスクロールする必要があります。</p>
<p>私がやりたいのは、これを次のように変更することです: </p>
<pre class="brush:php;toolbar:false;">test('購読者の最新のサブスクリプションを取得できます', getlatestSubscription());
test('サブスクライバのアクティブなサブスクリプションを取得できます', getActiveSubscriptions());
関数 getlatestSubscription() {
/// ここに関数コード
});
関数 getActiveSubscriptions() {
// ここに関数コード
});</pre>
<p>ただし、テスト関数には $this への参照が含まれています。これは通常のクロージャで使用できますが、そこに設定したため標準関数では使用できません。 </p>
<p>編集: laravel ペスト プラグインを使用しています。これが $this</p> の使用に影響するかどうかはわかりません。
<p>この問題を解決する方法はありますか? </p>