gpt4 book ai didi

php - 通过测试中的方法传递请求

转载 作者:行者123 更新时间:2023-11-28 21:16:24 25 4
gpt4 key购买 nike

我的类中有一个generate() 方法,它只是创建 类实例的简写方式。它接受一个 request,该请求在方法上有类型提示。我正在尝试对此进行单元测试,我知道的唯一方法是 make 一个 answer 并通过它。这不起作用,因为它不是 request。有解决办法吗?方法如下:

public static function generate(Question $question, Request $request): self
{
return self::create([
'user_id' => Auth::user()->getKey(),
'question_id' => $question->getKey(),
'answer_body' => $request->answer_body,
]);
}

这里是测试

/** @test */
public function it_can_generate_a_new_instance()
{
$user = factory(User::class)->create();
$this->actingAs($user);

$question = factory(Question::class)->create();
$answer = factory(Answer::class)->make();

Answer::generate($question, $answer);

$this->assertEquals($user->getKey(), Answer::first()->user_id);
$this->assertEquals($question->getKey(), Answer::first()->question_id);
$this->assertEquals($answer->answer_body, Answer::first()->answer_body);
}

测试通过,直到我在方法中键入提示 Request

最佳答案

您可以使用给定的属性创建一个新的请求对象。它可能有点脆弱,但它应该可以工作:

public function it_can_generate_a_new_instance()
{
$user = factory(User::class)->create();
$this->actingAs($user);

$question = factory(Question::class)->create();
$answer = factory(Answer::class)->make();
$request = new Request([ 'answer_body' => $answer->answer_body ]);

Answer::generate($question, $request);

$this->assertEquals($user->getKey(), Answer::first()->user_id);
$this->assertEquals($question->getKey(), Answer::first()->question_id);
$this->assertEquals($answer->answer_body, Answer::first()->answer_body);
}

关于php - 通过测试中的方法传递请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57461937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com