OCMockito のドキュメントでは、クラス オブジェクトをモックすることは可能であると主張していますが、その方法を理解できるとしたら気が遠くなります。次のテストは次のエラーで失敗しますExpected "Purple" but was ""
:
- (void)testClassMethodMocking
{
Class stringClassMock = mockClass([NSString class]);
[given([stringClassMock string]) willReturn:@"Purple"];
assertThat([NSString string], equalTo(@"Purple"));
}
上記のリンクされた FAQ セクション「クラス オブジェクトをどのようにモックしますか?」への回答があれば、クラスメソッドの戻り値をスタブできることを意味するわけではありませんが、それは何に使用されますか?
編集:
もちろん、上記は縮退した例であり、実際の [NSString string] 呼び出しはテスト対象のメソッド内にあります。
- (NSString *)methodThatCallsAClassMethod
{
return [NSString string];
}
...上記のアサートを次のようにします。
assertThat([testedObject methodThatCallsAClassMethod], equalTo(@"Purple"));
それで、上記のフラットアウトは機能しませんか?では、ここでやりたいことをどのように達成できますか?