このような値を比較したい場合は気をつけましょうという話です。
単純にassertEqualsすると、文字列の長さが違っても常にGreenになってしまい、コードの不具合に気が付かない可能性があるからです。
値の例:
値A: '0000000000123'
値B: '000000123'
どっちも文字列。
これらをこのようなアサーションで確認すると、なんと・・・結果がGreenになります。
$this->assertEquals(値A, 値B);
更に例を書くと、こういう状態です:
//UTが失敗する例(値がどうみても違う):
$this->assertEquals('2', '001');
//UTが成功する例:
$this->assertEquals('01', '001');
$this->assertEquals('1', '001');
$this->assertEquals(1, '001');
0埋めした値が、正しく求めている長さになっているかをテストするには、これが一番確実な方法かも知れないです:
- 型まで一致するか確認する: assertSame使う
$this->assertSame('01', '001');
$this->assertSame('1', '001');
$this->assertSame(1, '001');
→ 全てちゃんとRedになる。
- さらに、長さを念のため確認する(長さが期待通りかテストしたいわけなので)
$this->assertEquals(strlen('01'), strlen('001'));
$this->assertEquals(strlen('1'), strlen('001'));
$this->assertEquals(strlen(1), strlen('001'));
→ 全てちゃんとRedになる。