Laravel TDD assertSee returns NULL 对象为真
Laravel TDD assertSee returns true on NULL object
每当我尝试测试某个不存在的对象 属性(实际上为空)时,使用 $this->assertSee($record->someNonExistingProperty)
:
时测试通过
public function test_a_user_should_be_able_to_see_a_consumer_address()
{
$this->get(route('users.index'))->assertSee($this->user->address);
}
$this->user->address
不存在,但测试returns绿色
这个说法有什么问题吗?
我的猜测是这样的,它断言它可以看到 nothing/everything。
如果 $this->user->address
return null
那么您的断言将等同于:
$this->get(route('users.index'))->assertSee(null);
我也会对您的对象进行断言 属性。像这样:
$this->assertTrue($this->user->address !== null);
$this->get(route('users.index'))->assertSee($this->user->address);
关于 assert see 的文档指出它查找字符串并将转义它给出的任何值
解决此问题的方法是使用空合并运算符,例如:
$response ->assertSeeText($this->user->address ?? '**No Address Field**')
这部分 $this->user->address ?? '**No Address Field**'
检查是否有 $this->user->address
如果没有 returns **No Address Field**
- 只要您的视图不显示此文本,它就会失败。
所以基本上将 **No Address Field**
的文本更改为您希望在测试结果中看到的内容,以识别丢失的键,但在视图中不存在。
每当我尝试测试某个不存在的对象 属性(实际上为空)时,使用 $this->assertSee($record->someNonExistingProperty)
:
public function test_a_user_should_be_able_to_see_a_consumer_address()
{
$this->get(route('users.index'))->assertSee($this->user->address);
}
$this->user->address
不存在,但测试returns绿色
这个说法有什么问题吗?
我的猜测是这样的,它断言它可以看到 nothing/everything。
如果 $this->user->address
return null
那么您的断言将等同于:
$this->get(route('users.index'))->assertSee(null);
我也会对您的对象进行断言 属性。像这样:
$this->assertTrue($this->user->address !== null);
$this->get(route('users.index'))->assertSee($this->user->address);
关于 assert see 的文档指出它查找字符串并将转义它给出的任何值
解决此问题的方法是使用空合并运算符,例如:
$response ->assertSeeText($this->user->address ?? '**No Address Field**')
这部分 $this->user->address ?? '**No Address Field**'
检查是否有 $this->user->address
如果没有 returns **No Address Field**
- 只要您的视图不显示此文本,它就会失败。
所以基本上将 **No Address Field**
的文本更改为您希望在测试结果中看到的内容,以识别丢失的键,但在视图中不存在。