You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress中对HashPassword方法进行单元测试?

WordPress HashPassword 方法单元测试正确方案

问题根因

WordPress 内置的HashPassword()方法采用加盐哈希算法实现,每次调用时会自动生成随机盐值,因此即便输入相同的明文密码,每次返回的哈希串也会完全不同,直接固定哈希值做全等断言的方案不可行。

测试方案1:搭配官方校验方法做功能验证(推荐)

该方案贴近实际使用场景,无需关心哈希生成的内部逻辑,只需验证功能符合预期即可:

// 正向测试:正确密码可通过校验
$plainPassword = "123123";
$generatedHash = HashPassword($plainPassword);
$this->assertTrue(wp_check_password($plainPassword, $generatedHash));

// 反向测试:错误密码无法通过校验,避免方法逻辑写死返回固定合法值
$wrongPassword = "456456";
$this->assertFalse(wp_check_password($wrongPassword, $generatedHash));

测试方案2:手动指定固定盐,生成固定哈希做全等断言

如果需要做更细粒度的输出校验,可以手动传入符合格式要求的固定盐值,此时HashPassword会生成固定的哈希结果:

// 固定盐值,需符合WordPress哈希盐格式要求(长度、前缀匹配)
$fixedSalt = '$P$B9/8JZ6.';
$expectedHash = '$P$B9/8JZ6.epn3FhLmz4r0t9Y8u7I6o5P4a3S2d1F0g';

$plainPassword = "123123";
$result = HashPassword($plainPassword, $fixedSalt);

$this->assertSame($expectedHash, $result);

注意:如果传入的盐不符合格式要求,HashPassword内部会忽略传入值,重新生成随机盐,依旧会得到随机结果。

内容的提问来源于stack exchange,提问作者GetUnstuck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:36:04