如何使用phpspec有条件地检查对象?

如何使用phpspec有条件地检查对象?,php,laravel,tdd,phpspec,Php,Laravel,Tdd,Phpspec,我刚开始学习phpspec,我有一个问题。 好的,您可以检查某个值是否等于其他值,如果您想查看某个值是否介于某些值之间,可以创建如下匹配器: function getMatchers() { return [ 'beBetween' => function ($subject, $min, $max) { if ($subject >= $min && $subject <= $ma

我刚开始学习phpspec,我有一个问题。 好的,您可以检查某个值是否等于其他值,如果您想查看某个值是否介于某些值之间,可以创建如下匹配器:

function getMatchers()
{
    return [            
        'beBetween' => function ($subject, $min, $max) {
                if ($subject >= $min && $subject <= $max) {
                    return true;
                }
                return false;
            }           
    ];
}
但是你怎么能做一个有条件的测试呢? 假设
some_method()
返回的值为1 我们怎么能对phpspec说去观察被测试对象的另一个属性呢

我在上一堂简单的骰子课。我想让每个骰子掷骰返回,并用掷骰的值和状态数组。如果模辊为最小值,则状态应为“严重未命中”;如果模辊为最大值,则状态应为“严重未命中”

所以,我想测试一下这个

掷骰子。 模具辊值应介于1和6之间 如果模辊值为1,则模辊状态应为“严重未命中” 如果掷骰值为6,掷骰状态应为“严重命中”

你能在phpspec中做这样的测试吗


谢谢你

然后你写了不止一个测试!在我看来,测试是这样的:“你发送你的类a值X。你确保你得到Y作为回报。有选择地在B类中使用Z方法”。如果您有一些条件,您可以为每个场景编写一个测试。假设您的示例包含随机性,我会将“随机数生成”提取到另一个类中,以便您可以模拟它,以便单独测试您的“状态逻辑”。@edpaez谢谢:)
$this->some_method()->getValue()->shouldBeBetween(1,6);