我有一个EloquentUserRepository,我想测试它的方法,但我真的不知道从哪里开始。任何人都可以为此提供任何帮助吗?
public function findByProvider($provider, $user)
{
if (is_object($user))
{
$user = $user->id;
}
return $this->instance()->whereHas('socialProviders', function ($q) use ($provider, $user)
{
$q->where('name', $provider);
})->first();
}
这是我想测试的功能的一个例子。它正在寻找拥有一个socialProvider的用户,例如github。具有社交提供者的用户的基本结构将是这样的:
$data = [
'user' => [
'id' => 1,
'email' => 'test@test.com',
'socialProvider' => [
[
'name' => 'github',
'provider_id' => '00000000'
]
]
]
];
设置此项,如何根据此结构测试模型?是否真的需要为此目的创建内存数据库,迁移和种子,或者可以在没有它的情况下进行测试?
由于laracasts视频,我使用phpspec,但我不确定它是否是正确的选择......我希望你们中的一些人可以提供帮助!
答案 0 :(得分:1)
以色列,我知道这是一个较旧的主题,但这可能会对将来有所帮助。在您的情况下,最好使用Codeception之类的东西,因为您使用的是Eloquent提供的方法。 根据我的经验,对Eloquent Models进行测试已经证明非常难以测试。你最终会在测试中编写你想要测试的方法的整个逻辑,这是不好的。
基本上,您可以假设Eloquent已经过正确测试,并且方法的行为符合预期,您的测试应该只声明此方法将返回您描述的特定数据集。
使用Codeception进行测试将证明是一项更容易的任务,并允许您根据各种数据状态测试各种场景。
希望这有助于您和未来的读者。