찾다

 >  Q&A  >  본문

클로저에서 일반 기능으로 기능을 이동하는 방법

<p>저희는 尝试使害虫测试文件更易于阅读。</p> <p>目前,我有一些标准测试:</p> <pre class="brush:php;toolbar:false;">test('구독자의 최신 구독을 얻을 수 있습니다.', function () { $this->seed(PlansTestSeeder::class); $this->seed(SubscriptionsTestSeeder::class); $this->assertDatabaseCount('계획', 2); $this->assertDatabaseCount('구독', 0); 구독::factory()->create([ "계획_ID" => 계획::where("슬러그", "브론즈")->first()->id ]); 구독::factory()->create([ "계획_ID" => 계획::where("슬러그", "실버")->first()->id ]); 구독::factory()->create([ "계획_ID" => 계획::where("슬러그", "실버")->first()->id, "상태" => '만료됨' ]); 구독::factory()->trashed()->create(); $this->assertDatabaseCount('구독', 4); }); test('구독자의 활성 구독을 얻을 수 있습니다.', function () { $this->seed(PlansTestSeeder::class); $this->seed(SubscriptionsTestSeeder::class); $silverPlan = 계획::where("슬러그", "실버")->first(); $subscription1 = 구독::factory()->create([ "계획_ID" => 계획::where("슬러그", "실버")->first()->id, "구독자_ID" => 1, "구독자_유형" => "ApresourcingFrameworkBillingTestsModelsSubscriber", "created_at" => now()->subDays(2), "시작_시간" => now()->subDays(2) ]); $subscription2 = 구독::factory()->create([ "계획_ID" => $silverPlan->id, "구독자_ID" => 1, "구독자_유형" => "ApresourcingFrameworkBillingTestsModelsSubscriber", "created_at" => now()->subDays(1), "시작_시간" => now()->subDays(1) ]); $user = 구독자::find(1); $subscription = $user->latestSubscription(); 기대($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 pest 플러그인을 사용하고 있습니다. 이것이 $this</p> 사용에 영향을 미치는지 잘 모르겠습니다. <p>이 문제를 해결할 수 있는 방법이 있나요? </p>
P粉831310404P粉831310404456일 전582

모든 응답(1)나는 대답할 것이다

  • P粉563446579

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

    답변에 몇 가지 팁을 제공해 주셔서 감사합니다. 기대했던 것만큼 깔끔하지는 않지만 적어도 모든 테스트("테스트 설명") 호출이 PHP 파일 하단의 한 위치에 있다는 의미입니다.

    으아악

    회신하다
    0
  • 취소회신하다