Phpunit и числа с плавающей запятой, хранящиеся в виде строк

В настоящее время я использую расширение BC Math в проекте.

В моих модульных тестах есть несколько сравнений, похожих на приведенные ниже:

Это пройдет:

        $this->assertEquals('1.23456789123456789123434', 
                            '1.2345678912345678912343434654654654654'
        ); 

Это не пройдет:

         $this->assertEquals('1.23456789123456789123434', 
                             '1.23456789123456719123434'
         ); 

Я прочитал несколько битов, которые, кажется, предполагают, что две строки будут рассматриваться как числовые, если is_numeric возвращает true. В phpunit уже есть функции для сравнения двух числовых строк как строк. Я знаю, что могу написать пользовательское утверждение, но не хочу, если такая функциональность уже существует?

Я очень внимательно посмотрел и, похоже, не могу увидеть функциональность, но чувствую, что она должна существовать...


person Purple Hexagon    schedule 27.08.2014    source источник


Ответы (1)


Хорошо, сразу после публикации я работаю над ответом...

Вы можете использовать $this->assertSame(), например...

это пройдет:

    $this->assertSame('1.2345678912345678912343434654654654654',
                      '1.2345678912345678912343434654654654654'
    );

это не пройдет:

    $this->assertSame('1.234567891234567891234343465465465465',
                      '1.2345678912345678912343434654654654654'
    );
person Purple Hexagon    schedule 27.08.2014
comment
Почему второй не проходит? - person thelastshadow; 21.05.2018
comment
Ну, я мало что помню об этом, так как это было 4 года назад, но... пример кажется довольно плохим. Проблема заключалась в том, что утверждения с большей точностью будут обрабатываться assertEquals одинаково, но assertSame исправил это. Во втором примере есть дополнительная цифра, которая означает, что он не должен проходить. - person Purple Hexagon; 22.05.2018