phpunit 测试 assertNotRegExp() 没有按预期工作?
Posted
技术标签:
【中文标题】phpunit 测试 assertNotRegExp() 没有按预期工作?【英文标题】:phpunit test assertNotRegExp() not working as expected? 【发布时间】:2016-08-27 10:31:51 【问题描述】:测试失败,断言 '"error":"message":"Book not found"' 与 PCRE 模式 "/Book not found/" 不匹配。
为什么这个模式与内容字符串不匹配?
<?php
namespace Tests\App\Http\Controllers;
use TestCase;
class BooksControllerTest extends TestCase
/** @test **/
public function show_route_should_not_match_an_invalid_route()
$this->get('/books/this-is-invalid');
$this->assertNotRegExp(
'/Book not found/',
$this->response->getContent(),
'BooksController@show route matching when it should not.'
);
【问题讨论】:
【参考方案1】:模式/Book not found/
确实匹配内容字符串"error":"message":"Book not found"
。这工作正常。
请注意,您使用的是 assertNotRegExp()
- 也就是说,您实际上是在说 - “确保模式 不 匹配字符串”。所以当模式不匹配时断言成功,当模式匹配时断言失败。
看来您实际上想使用assertRegExp()
进行测试。
【讨论】:
嗯。完成“使用 Lumen 编写 API”。我发现我误读了有关更新路线的部分。修复了 $app->get('/books/id:[\d]+', 'BooksController@show'); 的重复路由;现在测试工作。 Route 与该表达式不匹配它不会被路由到控制器。以上是关于phpunit 测试 assertNotRegExp() 没有按预期工作?的主要内容,如果未能解决你的问题,请参考以下文章