ios - Capturing blocks from method parameters in Kiwi? -


i'm working firebase ios sdk, , i'm struggling figure out how fully-test of firebase method calls using kiwi.

i'm using instance of firebase "watch" path:

firebase *streamsreference = [self.firebaseref childbyappendingpath:@"streams"];

and using streamsreference observe events:

[streamsreference observeeventtype:feventtypechildadded withblock:^(fdatasnapshot *snapshot) {      // stuff in block here  }]; 

i want test effects of code in block.

this i've got far:

    it(@"should handle incoming connections hook webrtc", ^{          id mockfirebaseclass = [kwmock mockforclass:[firebase class]];          // mock firebase object handle "/streams" path         id mockfirebasestreamsreference = [kwmock mockforclass:[firebase class]];          // return streams reference object via mock firebase object         [mockfirebaseclass stub:@selector(childbyappendingpath:) andreturn:mockfirebasestreamsreference];          // attempt capture block in second param         kwcapturespy *spy = [mockfirebasestreamsreference captureargument:@selector(observeeventtype:withblock:) atindex:1];          // inject firebase mock test class         classundertest.firebaseref = mockfirebaseclass;          // capture block spy         void(^blocktorun)() = spy.argument;          // call method invoke firebase observeeventtype:withblock method         [classundertest setupincomingremoteconnectionhandler];          //  run captured block         blocktorun(nil);          ...         ... expectations go here         ...      }); 

when run test, it's failing argument requested has yet captured error - suggests i'm nailing things in wrong order. can see i'm going wrong here?

you trying capture argument early, before watched method had been called. try move void(^blocktorun)() = spy.argument; line after call setupincomingremoteconnectionhandler. if doesn't work either, means need make run calls test class in order trigger observeeventtype:withblock: call.


Comments

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -