LoginSignup
6
3

More than 5 years have passed since last update.

数字を0埋めした文字列をUnitTestで確認するときの注意点

Last updated at Posted at 2017-06-13

このような値を比較したい場合は気をつけましょうという話です。
単純に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埋めした値が、正しく求めている長さになっているかをテストするには、これが一番確実な方法かも知れないです:

  1. 型まで一致するか確認する: assertSame使う
$this->assertSame('01', '001');
$this->assertSame('1', '001');
$this->assertSame(1, '001');

→ 全てちゃんとRedになる。

  1. さらに、長さを念のため確認する(長さが期待通りかテストしたいわけなので)
$this->assertEquals(strlen('01'), strlen('001'));
$this->assertEquals(strlen('1'), strlen('001'));
$this->assertEquals(strlen(1), strlen('001'));

→ 全てちゃんとRedになる。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3