assume
签名
function assume(bool) external;
描述
如果布尔表达式计算结果为 false,则模糊器将丢弃当前的模糊输入并开始新的模糊运行。
assume
作弊码主要用于非常狭窄的检查。
广泛的检查会减慢测试速度,因为找到有效值需要一段时间,如果达到最大拒绝次数,测试可能会失败。
你可以通过在你的 foundry.toml
文件中设置 fuzz.max_test_rejects
来配置拒绝阈值。
对于广泛的检查,比如确保 uint256
落在某个范围内,你可以使用取模运算符或 Forge Standard 的 bound
方法来限制你的输入。
有关通过 assume
进行过滤的更多信息,请参见这里。
示例
// Good example of using assume
function testSomething(uint256 a) public {
vm.assume(a != 1);
require(a != 1);
// [PASS]
}
// In this case assume is not a great fit, so you should bound inputs manually
function testSomethingElse(uint256 a) public {
a = bound(a, 100, 1e36);
require(a >= 100 && a <= 1e36);
// [PASS]
}
参见
Forge 标准库