Как повторно использовать другую тестовую функцию в том же тестовом классе в тесте phpunit (symfony 5)? - PullRequest
0 голосов
/ 09 апреля 2020

Я начинающий тест phpunit. Я хочу протестировать 2 функции в этом классе:

class SendEmailService 
{
  public function sendMail($prs1, $prs2, $prs3)
    {
        //...

        $result = $this->sendMailMessageBuilder($prs1, $prs2, $prs3);

        //...  
    }
  public function sendMailMessageBuilder($prs1, $prs2, $prs3)
    {
       // ...

       return ...;
    }
}

Затем я создал тестовый класс:

class SendEmailServiceTest extends TestCase
{
    /**
     * @dataProvider sendEmailMessageBuilderDataProvider()
     * @param $params
     * @param $expected
     */
    public function testSendEmailMessageBuilder($params, $expected)
    {
        //...

        $result = $sendMailService->sendMailMessageBuilder($params['$prs1'],$params['$prs2'],$params['$prs3']);
        $this->assertEquals($expected, $result);
    }

    /**
     * @dataProvider sendEmailDataProvider()
     * @param $params
     * @param $expected
     */
    public function testSendEmail($params, $expected)
    {
        //
    }

    public function sendEmailMessageBuilderDataProvider()
    {
        return [
            'happy-case-1' => [
                'params' => [
                    '$prs1' => ...,
                    '$prs2' => ...,
                    '$prs3' => ...
                ],
                'expected' => [
                    //...
                ]
            ]
        ];
    }
}

testSendEmailMessageBuilder() функция работает нормально. Затем я хочу повторно использовать его в функции testSendEmail(), потому что вижу в классе SendEmailService функцию sendEmail() обратного вызова функции sendEmailMessageBuilder(). Если да, нужно ли мне писать функцию sendEmailDataProvider()? Пожалуйста, помогите мне.

...