동기식 및 비동기식으로 큐를 처리하는 코드가 있습니다. OCMock을 사용하여 테스트하고 개별적으로 (동기식 및 비동기식) 모두 테스트 할 수 있지만 동시에 테스트 할 때 문제가 발생합니다.OCMock이 스레드 환경에서 참조를 혼동합니다.
대기열이 올바르게 처리되었는지 확인하려면 조롱받은 수신기를 전달하고이 수신기에서 대기열 처리기에 의해 전파되는 모든 알림이 있는지 묻는 것입니다. 나는 두 가지 검사를하고, 첫 번째 테스트 (비동기)에서 이러한 기대는 충족하지만 두 번째 테스트 (동기)와 함께이 오류 얻을 : https://github.com/jphollanti/queue-processor
그리고 다음은
OCMockObject[JHQueueListener] : 4 expected methods were not invoked:
startedProcessingQueue
startedToProcessQueueItem:OCMockObject[JHQueueItem]
finishedProcessingQueueItem:OCMockObject[JHQueueItem]
finishedProcessingQueue
프로젝트에 대한 링크의를
https://github.com/jphollanti/queue-processor/blob/master/QueueProcessorTests/JHQueueProcessorTests.m
실행 여부를 확인하기 전에 큐 프로세서가 실행되기 시작 했습니까? 이 경우 아직 처리하지 않았기 때문에 inProcess 검사에서 빠져 나올 수 있습니다. 그리고 OCMock은 작업을 끝내기 전에 아무 일도 일어나지 않았다고 정확하게 말할 것입니다. – gaige
제안 해 주셔서 감사합니다. 그건 사실이 아니었지만 나는 그 문제에 앞서 나아갈 수 있었다. 그것은 (NSThread isMainThread)를 확인하고 알림이 이미 메인 스레드에 있다면 조금씩 다르게 보냈다. 하지만 여전히 이상한 점은 이제 어떻게 든 무작위로 실패하고 있다는 것입니다. 이상한. – JHollanti