NSArrayのSTAssertEqualsを使用してNSArrayアイテムの数を確認する正しい方法は何ですか。
以下が機能すると予想されました。
...
STAssertEquals(1, [myArray count], @"One item should be in array");
このコードは、テストの実行時に「タイプの不一致」ランタイムエラーを生成します。
代わりに、NSUIntegerに明示的にキャストする必要があります。
STAssertEquals((NSUInteger)1, [myArray count], @"One item should be in array");
これは機能しますが、明示的なキャストのために見た目は醜いです。
また、STAssertEqualsはより適切に見え(2つの値を比較します)、実際の値と期待値を表示するため、STAssertTrueの使用は避けたいと思います。
Objective-Cでそれをチェックする正しい方法は何ですか?
更新1
unsignedintリテラルとして1uを使用することを提案された回答に感謝します
STAssertEquals(1u, [myArray count], @"One item should be in array");
しかし、@ Aaronが言ったように、それはまだ醜いです-私は直接「1」を使用したいと思います-代わりにmyArray.count==1を使用することを考えています。そしてその理由は、1uがあまりきれいに見えないからです。1は私にとって1です。数学で1uを書くことは決してありません:-)他に何か提案はありますか?
更新2
@ H2CO3が述べたように、1uは常に機能するとは限らず、一部のスレッドで示唆されているように、キャストの問題を解決する期待値のより宣言的な定義を使用できます。
NSUInteger expectedItemsCount = 1;
STAssertEquals(expectedItemsCount, [myArray count], @"One item should be in array");
見た目がすっきりしているので、1uソリューションよりも好きです。しかし、このアプローチの短所は、余分な行があり、コードがあまりコンパクトではないことです。(NSUInteger)1
したがって、次の2つのアプローチから選択する必要があるようです。NSUInteger expectedItemsCount = 1;