Bagaimana untuk mengalihkan fungsi daripada penutupan kepada fungsi biasa
P粉831310404
2023-09-05 21:54:44
<p>我正在尝试使害虫测试文件更易于阅读。</p>
<p>目前,我有一些标准测试:</p>
<pre class="brush:php;toolbar:false;">test('boleh mendapatkan langganan terbaharu pelanggan', fungsi () {
$this->seed(PlansTestSeeder::class);
$this->seed(SubscriptionsTestSeeder::class);
$this->assertDatabaseCount('plans', 2);
$this->assertDatabaseCount('langganan', 0);
Langganan::factory()->create([
"plan_id" => Pelan::di mana("slug", "gangsa")->first()->id
]);
Langganan::factory()->create([
"plan_id" => Pelan::di mana("slug", "perak")->first()->id
]);
Langganan::factory()->create([
"plan_id" => Pelan::di mana("slug", "perak")->first()->id,
"status" => "tamat tempoh"
]);
Langganan::kilang()->dibuang()->buat();
$this->assertDatabaseCount('langganan', 4);
});
test('boleh mendapatkan langganan aktif pelanggan', function () {
$this->seed(PlansTestSeeder::class);
$this->seed(SubscriptionsTestSeeder::class);
$silverPlan = Plan::where("slug", "perak")->first();
$subscription1 = Langganan::factory()->create([
"plan_id" => Pelan::di mana("slug", "perak")->first()->id,
"subscriber_id" => 1,
"jenis_pelanggan" => "ApresourcingFrameworkBillingTestsModelsSubscriber",
"dicipta_di" => sekarang()->subHari(2),
"bermula_pada" => sekarang()->subHari(2)
]);
$subscription2 = Langganan::factory()->create([
"plan_id" => $silverPlan->id,
"subscriber_id" => 1,
"jenis_pelanggan" => "ApresourcingFrameworkBillingTestsModelsSubscriber",
"dicipta_di" => sekarang()->subHari(1),
"bermula_pada" => sekarang()->subHari(1)
]);
$user = Subscriber::find(1);
$langganan = $pengguna->latestSubscription();
jangkakan($langganan->id)->untukBe($langganan2->id);
});</pre>
<p>但是为了提醒自己我编写了哪些测试,我必须一遍又一遍地上下滚动。</p>
<p>Apa yang saya mahu lakukan ialah menukarnya kepada sesuatu seperti ini: </p>
<pre class="brush:php;toolbar:false;">test('boleh mendapatkan langganan terbaharu pelanggan', getLatestSubscription());
test('boleh mendapatkan langganan aktif pelanggan', getActiveSubscriptions());
fungsi getLatestSubscription() {
/// kod fungsi di sini
});
fungsi getActiveSubscriptions() {
// kod fungsi di sini
});</pre>
<p>Walau bagaimanapun, fungsi ujian mengandungi rujukan kepada $this yang tersedia dalam penutupan biasa tetapi tidak dalam fungsi standard kerana saya menetapkannya di sana. </p>
<p>Edit: Saya menggunakan pemalam perosak laravel - Saya tidak pasti sama ada ini mempunyai kesan ke atas penggunaan $this</p>
<p>Adakah terdapat cara untuk menyelesaikan masalah ini? </p>
Terima kasih atas beberapa petua dalam balasan. Tidak sekemas yang saya harapkan, tetapi sekurang-kurangnya ini bermakna semua panggilan ujian ("keterangan ujian") berada di satu tempat di bahagian bawah fail php.