PHPUnit中,我似乎找不到一个简单测试一个字符串是否包含在另一个字符串中的断言.try 这样做:

public function testRecipe() {

    $plaintext = get_bread_recipe();

    $this->assertStringContains('flour', $plaintext);

}

我应该用什么来代替assertStringContains个真正的断言呢?在这种情况下,我宁愿不必担心正则表达式,因为绝对不需要它.

这很简单,一定有什么我忽略了,但我就是想不出来!有趣的是有assertStringStartsWith()assertStringEndsWith()

Update:我知道strpos() !== false可以用,但我在找更干净的.如果我只是使用普通的PHP函数,那么所有的断言都有什么意义呢...

推荐答案

2019和PHPUnit 8.0更新

assertContains()自PHPUnit 8.0以来已被弃用,请参见issue #3425.


现在推荐具体方法(见issue #3422):

$plaintext = 'I fell on the flour';
$this->assertStringContainsString('flour', $plaintext);

小贴士:使用Rector and PHPUnit 8.0 set立即升级.

Php相关问答推荐

在WooCommerce Checkout帐单地址字段后插入自定义按钮

FatFreeFramework上的不同路由

未在moodle上运行的计划任务

WooCommerce:有条件地更改特定区域的发货类别

从订单项目中获取ACF WooCommerce产品价值

PHP Laravel Web应用启动时间&>15秒

Symfony5:如何在不登录的情况下使API路由可访问?

PHP根据特定索引值从中删除子数组

在WordPress中从CPT中删除插件

模仿GUZLE中的curl 工作脚本(分块数据和二进制上传一起)

模式 bootstrap 未显示

fpm-php + nginx + POST数据

表单提交返回空白页

如何从phpseclib和SFTP获取日志(log)记录?

在WooCommerce循环中添加子类别和产品之间的分隔符

显示 woocommerce 中所选变体的属性术语描述

使用 Composer 找不到 Google APIClient 类

$_SERVER 超全局变量在 PHP 中是否保证可写?

我正在使用 Baryryvdh/laravel-snappy 从 HTML 导出 PDF 它正在工作但缩小了 pdf 文件

如何将文件直接上传到 Cloudinary 而不先保存在 public 文件夹中