ホームページ  >  に質問  >  本文

関数をクロージャから通常の関数に移動する方法

<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>
P粉831310404P粉831310404433日前567

全員に返信(1)返信します

  • P粉563446579

    P粉5634465792023-09-06 21:24:29

    返信でいくつかのヒントをありがとう。期待したほどきちんとしたものではありませんが、少なくとも、すべてのテスト (「テストの説明」) 呼び出しが php ファイルの下部の 1 か所にあることを意味します。

    リーリー

    返事
    0
  • キャンセル返事