2
完了ブロックまたは失敗したブロックのいずれかを呼び出すメソッドのユニットテストがあります。今私はどちらが呼び出されるべきなのかを知っているので、呼び出されるべきではないブロックの中でSTFail
を使う。ブロックが呼び出されたかどうかをテストする方法
どのように呼び出されるべきブロックが実際に呼び出されるかをテストする方法はありますか?
これは私の設定です:
NSString *parameter = @"foo";
[controller doSomethingWithParameter:parameter withcompletionBlock:
^(NSString *result)
{
// This block should be invoked
// Check if the result is correct
STAssertEquals(result, kSomeOKConstant, @"Result shout be 'kSomeOKConstant'");
} failedBlock:
^(NSString *errorMessage) {
STFail(@"No error should happen with parameter '%@'",parameter);
}];
しかし、私はこのアサーションを行うことができます。 'doSomethingWithParameter'を呼び出した後にそれを行うと、それはとにかく' NO'に設定されます。 – Besi
@Besi no、ブロックに設定されると、doSomethingWithBlockが返ってもYESに設定されたままになります。これが__block変数の "魔法"です。 – dasblinkenlight
まさか!今私は混乱していて興奮しています:-)私はそれにショットをあげるでしょう、事前に感謝します。 – Besi