So verschieben Sie die Funktion von der Schließung zur normalen Funktion
P粉831310404
2023-09-05 21:54:44
<p>我正在尝试使害虫测试文件更易于阅读.</p>
<p>目前,我有一些标准测试:</p>
<pre class="brush:php;toolbar:false;">test('kann das neueste Abonnement für Abonnenten abrufen', function () {
$this->seed(PlansTestSeeder::class);
$this->seed(SubscriptionsTestSeeder::class);
$this->assertDatabaseCount('pläne', 2);
$this->assertDatabaseCount('subscriptions', 0);
Subscription::factory()->create([
"plan_id" => Plan::where("slug", "bronze")->first()->id
]);
Subscription::factory()->create([
"plan_id" => Plan::where("slug", "silver")->first()->id
]);
Subscription::factory()->create([
"plan_id" => Plan::where("slug", "silver")->first()->id,
"Status" => "abgelaufen"
]);
Subscription::factory()->trashed()->create();
$this->assertDatabaseCount('subscriptions', 4);
});
test('kann Abonnenten aktive Abonnements erhalten', function () {
$this->seed(PlansTestSeeder::class);
$this->seed(SubscriptionsTestSeeder::class);
$silverPlan = Plan::where("slug", "silver")->first();
$subscription1 = Subscription::factory()->create([
"plan_id" => Plan::where("slug", "silver")->first()->id,
"Abonnenten-ID" => 1,
"subscriber_type" => „ApresourcingFrameworkBillingTestsModelsSubscriber“,
"erstellt_at" => now()->subDays(2),
"gestartet um" => now()->subDays(2)
]);
$subscription2 = Subscription::factory()->create([
"plan_id" => $silverPlan->id,
"Abonnenten-ID" => 1,
"subscriber_type" => „ApresourcingFrameworkBillingTestsModelsSubscriber“,
"erstellt_at" => now()->subDays(1),
"gestartet um" => now()->subDays(1)
]);
$user = Subscriber::find(1);
$subscription = $user->latestSubscription();
erwarten($subscription->id)->toBe($subscription2->id);
});</pre>
<p></p>
<p>Was ich tun möchte, ist, es in etwa so zu ändern: </p>
<pre class="brush:php;toolbar:false;">test('kann das neueste Abonnement für Abonnenten abrufen', getLatestSubscription());
test('kann Abonnenten aktive Abonnements erhalten', getActiveSubscriptions());
Funktion getLatestSubscription() {
/// Funktionscode hier
});
Funktion getActiveSubscriptions() {
// Funktionscode hier
});</pre>
<p>Allerdings enthält die Testfunktion einen Verweis auf $this, der im normalen Abschluss verfügbar ist, aber nicht in der Standardfunktion, weil ich ihn dort gesetzt habe. </p>
<p>Bearbeiten: Ich verwende das Laravel-Pest-Plugin – ich bin mir nicht sicher, ob dies Auswirkungen auf die Verwendung von $this</p> hat.
<p>Gibt es eine Möglichkeit, dieses Problem zu lösen? </p>
感谢回复中的一些提示。不像我希望的那样整洁,但至少这意味着所有测试(“测试描述”)调用都位于 php 文件底部的一个位置。