SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Mock'n'StubMock'n'Stub
OCMock, OCMockito, Nocilla, OHHTTPStubs Sandboxи немногоOCMock, OCMockito, Nocilla, OHHTTPStubs Sandboxи немного
Пирожок Без НиктоПирожок Без Никто
• Создавать дополнительные объектыСоздавать дополнительные объекты
• " "Создавать временную реализацию протокола" "Создавать временную реализацию протокола
• Оставлять затычкиОставлять затычки #ifdef DEBUG ...#ifdef DEBUG ...
• Всякие радости с бэкэндомВсякие радости с бэкэндом
Вот эти ребятаВот эти ребята
• OCMockOCMock
• OCMockitoOCMockito
• NocillaNocilla
• OHHTTPStubsOHHTTPStubs
• Sandboxи немного Sandboxи немного
Два брата-акробатаДва брата-акробата
• mock-Создавать объекты для классовmock-Создавать объекты для классов
OCMClassMockOCMClassMock((aClassaClass))
MKTMockMKTMock((aClassaClass))
• mock-Создавать объекты для протоколовmock-Создавать объекты для протоколов
OCMProtocolMockOCMProtocolMock((aProtocolaProtocol))
MKTMockProtocolMKTMockProtocol((aProtocolaProtocol))
• OCMockitoУ есть дополнительные методыOCMockitoУ есть дополнительные методы
MKTMockObjectAndProtocolMKTMockObjectAndProtocol((aClassaClass,, aProtocolaProtocol))
MKTMockProtocolWithoutOptionalsMKTMockProtocolWithoutOptionals((aProtocolaProtocol))
• OCMockУ есть дополнительные методыOCMockУ есть дополнительные методы
OCMStrictClassMockOCMStrictClassMock((aClassaClass))
OCMStrictProtocolMockOCMStrictProtocolMock((aProtocolaProtocol))
OCMPartialMockOCMPartialMock((aObjectaObject))
OCMObserverMockOCMObserverMock()()
Stubbing methodsStubbing methods
idid<ContentProviderProtocol> contentProvider = ...<ContentProviderProtocol> contentProvider = ...
OCMStubOCMStub([contentProvider([contentProvider loadSomeValuesloadSomeValues]).]).andReturnandReturn((@[@1, @3, @2]@[@1, @3, @2]););
[[MKTGivenMKTGiven([contentProvider([contentProvider loadSomeValuesloadSomeValues])]) willReturnwillReturn::@[@1, @3, @2]@[@1, @3, @2]];];
OCMockitoOCMockito
--willReturnwillReturn%primitiveTypeName%:aValue%primitiveTypeName%:aValue
--willReturnStructwillReturnStruct:aStructPointer:aStructPointer objCTypeobjCType:aType:aType
--willDowillDo:aBlock:aBlock
--willThrowwillThrow:anException:anException
OCMockOCMock
..andReturnandReturn(aValue)(aValue)
..andThrowandThrow(anException)(anException)
..andPostandPost(aNotification)(aNotification)
..andCallandCall(anObject, aSelector)(anObject, aSelector)
..andDoandDo(aBlock)(aBlock)
..andForwardToRealObjectandForwardToRealObject()()
Chaining stub actionsChaining stub actions
OCMStubOCMStub([contentProvider([contentProvider loadSomeValuesloadSomeValues]).]).andReturnandReturn((@[@1, @3,@[@1, @3,
@2]@2]).).andThrowandThrow((willThrowwillThrow:anException);:anException);
[[[[MKTGivenMKTGiven([contentProvider([contentProvider loadSomeValuesloadSomeValues])]) willReturnwillReturn::@[@1, @3, @2]@[@1, @3, @2]]]
willThrowwillThrow:anException];:anException];
Advanced stubbing methodsAdvanced stubbing methods
NSMutableArrayNSMutableArray *mockArray = ...*mockArray = ...
OCMStubOCMStub([mockArray([mockArray addObject:@1addObject:@1]);]);
OCMArgOCMArg *arg =*arg = [[OCMArgOCMArg isKindOfClassisKindOfClass:[:[NSStringNSString classclass]];]];
OCMStubOCMStub([mockArray([mockArray addObjectaddObject:arg]).:arg]).andThrowandThrow(anException);(anException);
OCMArgOCMArg
--isNilisNil
--isNotNilisNotNil
--isNotEqualisNotEqual:aValue:aValue
--isKindOfClassisKindOfClass:aClass:aClass
--checkWithSelectorcheckWithSelector:aSelector:aSelector onObjectonObject:anObject:anObject
--checkWithBlockcheckWithBlock:^:^BOOLBOOL((idid value)blockvalue)block
[[MKTGivenMKTGiven([mockArray([mockArray containsObjectcontainsObject::startsWithstartsWith((@"tes"@"tes")]))]) willReturnBoolwillReturnBool::YESYES];];
Verifying interactionsVerifying interactions
NSMutableArrayNSMutableArray *mockArray = ...*mockArray = ...
[mockArray[mockArray removeObjectremoveObject::@"This is a test"@"This is a test"];];
[[MKTVerifyMKTVerify(mockArray)(mockArray) removeObjectremoveObject::startsWithstartsWith((@"This is"@"This is")];)];
OCMVerifyOCMVerify([mockArray([mockArray removeObjectremoveObject::startsWithstartsWith((@"This is"@"This is")]);)]);
OCMExpectOCMExpect([mockArray([mockArray removeObjectremoveObject::startsWithstartsWith((@"This is"@"This is")]);)]);
OCMExpectOCMExpect([mockArray([mockArray removeAllObjectsremoveAllObjects]);]);
......
OCMVerifyAllOCMVerifyAll(classMock)(classMock)
NocillaNocilla
+ (+ (voidvoid)setUp)setUp
{{
[[[[LSNocillaLSNocilla sharedInstancesharedInstance]] startstart];];
}}
- (- (voidvoid)setUp)setUp
{{
[[[[LSNocillaLSNocilla sharedInstancesharedInstance]] clearStubsclearStubs];];
}}
+ (+ (voidvoid)tearDown)tearDown
{{
[[[[LSNocillaLSNocilla sharedInstancesharedInstance]] stopstop];];
}}
Stubbing requestsStubbing requests
stubRequeststubRequest((@"GET"@"GET",, @"http://mockingbird.getsandbox.com/selectedColor"@"http://mockingbird.getsandbox.com/selectedColor"))
..withHeaderswithHeaders((@{@{@"Accept"@"Accept":: @"application/json"@"application/json"}}))
..andReturnandReturn((200200))
..withHeaderswithHeaders((@{@{@"Content-Type"@"Content-Type":: @"application/json"@"application/json"}}))
..withBodywithBody((@"{"selectedColor":[1, 0, 0, 1]}"@"{"selectedColor":[1, 0, 0, 1]}"););
andReturnRawResponseandReturnRawResponse(aData);(aData);
andFailWithErrorandFailWithError(anError);(anError);
OHHTTPStubsOHHTTPStubs
[[OHHTTPStubsOHHTTPStubs stubRequestsPassingTeststubRequestsPassingTest:^:^BOOLBOOL((NSURLRequestNSURLRequest *request) {*request) {
......
returnreturn isRequestAcceptedByStub;isRequestAcceptedByStub;
}} withStubResponsewithStubResponse:^:^OHHTTPStubsResponseOHHTTPStubsResponse*(*(NSURLRequestNSURLRequest *request) {*request) {
returnreturn httpStubsResponse;httpStubsResponse;
}];}];
OHHTTPStubsResponseOHHTTPStubsResponse
++ responseWithDataresponseWithData::statusCode:headersstatusCode:headers::
++ responseWithFileAtPathresponseWithFileAtPath::statusCode:headersstatusCode:headers::
++ responseWithErrorresponseWithError::
++ responseWithJSONObjectresponseWithJSONObject::statusCodestatusCode::headersheaders::
++ responseWithHTTPMessageDataresponseWithHTTPMessageData::
++ responseNamed:inBundleresponseNamed:inBundle::
SandboxSandbox
Всем спасибо за внимание!Всем спасибо за внимание!
• OCMock -OCMock - http://ocmock.org/http://ocmock.org/
• OCMockito -OCMockito - https://github.com/jonreid/OCMockitohttps://github.com/jonreid/OCMockito
• Nocilla -Nocilla - https://github.com/luisobo/Nocillahttps://github.com/luisobo/Nocilla
• OHHTTPStubs -OHHTTPStubs -
https://github.com/AliSoftware/OHHTTPStubshttps://github.com/AliSoftware/OHHTTPStubs
• Sandbox -Sandbox - https://getsandbox.com/https://getsandbox.com/

Weitere ähnliche Inhalte

Andere mochten auch

Work Resume Dromerick 2016
Work Resume Dromerick 2016Work Resume Dromerick 2016
Work Resume Dromerick 2016
Laura Dromerick
 
Datix Handler Training manual
Datix Handler Training manualDatix Handler Training manual
Datix Handler Training manual
Ola Hill
 

Andere mochten auch (11)

Question 4
Question 4Question 4
Question 4
 
Are Top Web Sites Good For Everybody?
Are Top Web Sites Good For Everybody?Are Top Web Sites Good For Everybody?
Are Top Web Sites Good For Everybody?
 
Facebook
FacebookFacebook
Facebook
 
Work Resume Dromerick 2016
Work Resume Dromerick 2016Work Resume Dromerick 2016
Work Resume Dromerick 2016
 
Mga teorya at tungkulin ng wikang filipino
Mga teorya at tungkulin ng wikang filipinoMga teorya at tungkulin ng wikang filipino
Mga teorya at tungkulin ng wikang filipino
 
Datix Handler Training manual
Datix Handler Training manualDatix Handler Training manual
Datix Handler Training manual
 
Стратегия тестирования - больше чем просто план
Стратегия тестирования - больше чем просто планСтратегия тестирования - больше чем просто план
Стратегия тестирования - больше чем просто план
 
Advert research
Advert researchAdvert research
Advert research
 
Streaming Music in 2016
Streaming Music in 2016Streaming Music in 2016
Streaming Music in 2016
 
Thiết kế khu vui chơi trẻ em
Thiết kế khu vui chơi trẻ emThiết kế khu vui chơi trẻ em
Thiết kế khu vui chơi trẻ em
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTdd
 

Ähnlich wie Mock-n-stub

Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Hiroki Mizuno
 
MongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDBMongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDB
Boxed Ice
 

Ähnlich wie Mock-n-stub (11)

Coqによる証明駆動開発
Coqによる証明駆動開発Coqによる証明駆動開発
Coqによる証明駆動開発
 
Process Doppelgänging
Process Doppelgänging Process Doppelgänging
Process Doppelgänging
 
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
 
CBDW2014 - MockBox, get ready to mock your socks off!
CBDW2014 - MockBox, get ready to mock your socks off!CBDW2014 - MockBox, get ready to mock your socks off!
CBDW2014 - MockBox, get ready to mock your socks off!
 
Thinking Outside The [Sand]Box
Thinking Outside The [Sand]BoxThinking Outside The [Sand]Box
Thinking Outside The [Sand]Box
 
Rubygems And You
Rubygems And YouRubygems And You
Rubygems And You
 
Invoke-CradleCrafter: Moar PowerShell obFUsk8tion & Detection (@('Tech','niqu...
Invoke-CradleCrafter: Moar PowerShell obFUsk8tion & Detection (@('Tech','niqu...Invoke-CradleCrafter: Moar PowerShell obFUsk8tion & Detection (@('Tech','niqu...
Invoke-CradleCrafter: Moar PowerShell obFUsk8tion & Detection (@('Tech','niqu...
 
Splash
SplashSplash
Splash
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
 
MongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDBMongoUK 2011 - Rplacing RabbitMQ with MongoDB
MongoUK 2011 - Rplacing RabbitMQ with MongoDB
 

Kürzlich hochgeladen

FULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Badarpur | DelhiFULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
SaketCallGirlsCallUs
 
FULL NIGHT — 9999894380 Call Girls In Dwarka Mor | Delhi
FULL NIGHT — 9999894380 Call Girls In Dwarka Mor | DelhiFULL NIGHT — 9999894380 Call Girls In Dwarka Mor | Delhi
FULL NIGHT — 9999894380 Call Girls In Dwarka Mor | Delhi
SaketCallGirlsCallUs
 
Dubai Call Girl Number # 0522916705 # Call Girl Number In Dubai # (UAE)
Dubai Call Girl Number # 0522916705 # Call Girl Number In Dubai # (UAE)Dubai Call Girl Number # 0522916705 # Call Girl Number In Dubai # (UAE)
Dubai Call Girl Number # 0522916705 # Call Girl Number In Dubai # (UAE)
Business Bay Call Girls || 0529877582 || Call Girls Service in Business Bay Dubai
 
Massage And Sex Call Girls In Chandigarh 9053900678 Chandigarh Call Girls
Massage And Sex Call Girls In Chandigarh 9053900678 Chandigarh Call GirlsMassage And Sex Call Girls In Chandigarh 9053900678 Chandigarh Call Girls
Massage And Sex Call Girls In Chandigarh 9053900678 Chandigarh Call Girls
Chandigarh Call girls 9053900678 Call girls in Chandigarh
 
Bobbie goods coloring book 81 pag_240127_163802.pdf
Bobbie goods coloring book 81 pag_240127_163802.pdfBobbie goods coloring book 81 pag_240127_163802.pdf
Bobbie goods coloring book 81 pag_240127_163802.pdf
MARIBEL442158
 
FULL NIGHT — 9999894380 Call Girls In Delhi Cantt | Delhi
FULL NIGHT — 9999894380 Call Girls In Delhi Cantt | DelhiFULL NIGHT — 9999894380 Call Girls In Delhi Cantt | Delhi
FULL NIGHT — 9999894380 Call Girls In Delhi Cantt | Delhi
SaketCallGirlsCallUs
 
Museum of fine arts Lauren Simpson…………..
Museum of fine arts Lauren Simpson…………..Museum of fine arts Lauren Simpson…………..
Museum of fine arts Lauren Simpson…………..
mvxpw22gfc
 
FULL NIGHT — 9999894380 Call Girls In Shivaji Enclave | Delhi
FULL NIGHT — 9999894380 Call Girls In Shivaji Enclave | DelhiFULL NIGHT — 9999894380 Call Girls In Shivaji Enclave | Delhi
FULL NIGHT — 9999894380 Call Girls In Shivaji Enclave | Delhi
SaketCallGirlsCallUs
 
FULL NIGHT — 9999894380 Call Girls In Delhi | Delhi
FULL NIGHT — 9999894380 Call Girls In Delhi | DelhiFULL NIGHT — 9999894380 Call Girls In Delhi | Delhi
FULL NIGHT — 9999894380 Call Girls In Delhi | Delhi
SaketCallGirlsCallUs
 

Kürzlich hochgeladen (20)

FULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Badarpur | DelhiFULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
 
FULL NIGHT — 9999894380 Call Girls In Dwarka Mor | Delhi
FULL NIGHT — 9999894380 Call Girls In Dwarka Mor | DelhiFULL NIGHT — 9999894380 Call Girls In Dwarka Mor | Delhi
FULL NIGHT — 9999894380 Call Girls In Dwarka Mor | Delhi
 
Storyboard short: Ferrarius Tries to Sing
Storyboard short: Ferrarius Tries to SingStoryboard short: Ferrarius Tries to Sing
Storyboard short: Ferrarius Tries to Sing
 
Dubai Call Girl Number # 0522916705 # Call Girl Number In Dubai # (UAE)
Dubai Call Girl Number # 0522916705 # Call Girl Number In Dubai # (UAE)Dubai Call Girl Number # 0522916705 # Call Girl Number In Dubai # (UAE)
Dubai Call Girl Number # 0522916705 # Call Girl Number In Dubai # (UAE)
 
Editorial sephora annual report design project
Editorial sephora annual report design projectEditorial sephora annual report design project
Editorial sephora annual report design project
 
Massage And Sex Call Girls In Chandigarh 9053900678 Chandigarh Call Girls
Massage And Sex Call Girls In Chandigarh 9053900678 Chandigarh Call GirlsMassage And Sex Call Girls In Chandigarh 9053900678 Chandigarh Call Girls
Massage And Sex Call Girls In Chandigarh 9053900678 Chandigarh Call Girls
 
Sirmaur Call Girls Book Now 8617697112 Top Class Pondicherry Escort Service A...
Sirmaur Call Girls Book Now 8617697112 Top Class Pondicherry Escort Service A...Sirmaur Call Girls Book Now 8617697112 Top Class Pondicherry Escort Service A...
Sirmaur Call Girls Book Now 8617697112 Top Class Pondicherry Escort Service A...
 
Mayiladuthurai Call Girls 8617697112 Short 3000 Night 8000 Best call girls Se...
Mayiladuthurai Call Girls 8617697112 Short 3000 Night 8000 Best call girls Se...Mayiladuthurai Call Girls 8617697112 Short 3000 Night 8000 Best call girls Se...
Mayiladuthurai Call Girls 8617697112 Short 3000 Night 8000 Best call girls Se...
 
sources of Hindu law kdaenflkjwwfererger
sources of Hindu law kdaenflkjwwferergersources of Hindu law kdaenflkjwwfererger
sources of Hindu law kdaenflkjwwfererger
 
Completed Event Presentation for Huma 1305
Completed Event Presentation for Huma 1305Completed Event Presentation for Huma 1305
Completed Event Presentation for Huma 1305
 
(INDIRA) Call Girl Dehradun Call Now 8617697112 Dehradun Escorts 24x7
(INDIRA) Call Girl Dehradun Call Now 8617697112 Dehradun Escorts 24x7(INDIRA) Call Girl Dehradun Call Now 8617697112 Dehradun Escorts 24x7
(INDIRA) Call Girl Dehradun Call Now 8617697112 Dehradun Escorts 24x7
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
(INDIRA) Call Girl Jammu Call Now 8617697112 Jammu Escorts 24x7
(INDIRA) Call Girl Jammu Call Now 8617697112 Jammu Escorts 24x7(INDIRA) Call Girl Jammu Call Now 8617697112 Jammu Escorts 24x7
(INDIRA) Call Girl Jammu Call Now 8617697112 Jammu Escorts 24x7
 
Bobbie goods coloring book 81 pag_240127_163802.pdf
Bobbie goods coloring book 81 pag_240127_163802.pdfBobbie goods coloring book 81 pag_240127_163802.pdf
Bobbie goods coloring book 81 pag_240127_163802.pdf
 
FULL NIGHT — 9999894380 Call Girls In Delhi Cantt | Delhi
FULL NIGHT — 9999894380 Call Girls In Delhi Cantt | DelhiFULL NIGHT — 9999894380 Call Girls In Delhi Cantt | Delhi
FULL NIGHT — 9999894380 Call Girls In Delhi Cantt | Delhi
 
(NEHA) Call Girls Mumbai Call Now 8250077686 Mumbai Escorts 24x7
(NEHA) Call Girls Mumbai Call Now 8250077686 Mumbai Escorts 24x7(NEHA) Call Girls Mumbai Call Now 8250077686 Mumbai Escorts 24x7
(NEHA) Call Girls Mumbai Call Now 8250077686 Mumbai Escorts 24x7
 
Museum of fine arts Lauren Simpson…………..
Museum of fine arts Lauren Simpson…………..Museum of fine arts Lauren Simpson…………..
Museum of fine arts Lauren Simpson…………..
 
FULL NIGHT — 9999894380 Call Girls In Shivaji Enclave | Delhi
FULL NIGHT — 9999894380 Call Girls In Shivaji Enclave | DelhiFULL NIGHT — 9999894380 Call Girls In Shivaji Enclave | Delhi
FULL NIGHT — 9999894380 Call Girls In Shivaji Enclave | Delhi
 
FULL NIGHT — 9999894380 Call Girls In Delhi | Delhi
FULL NIGHT — 9999894380 Call Girls In Delhi | DelhiFULL NIGHT — 9999894380 Call Girls In Delhi | Delhi
FULL NIGHT — 9999894380 Call Girls In Delhi | Delhi
 
GENUINE EscoRtS,Call Girls IN South Delhi Locanto TM''| +91-8377087607
GENUINE EscoRtS,Call Girls IN South Delhi Locanto TM''| +91-8377087607GENUINE EscoRtS,Call Girls IN South Delhi Locanto TM''| +91-8377087607
GENUINE EscoRtS,Call Girls IN South Delhi Locanto TM''| +91-8377087607
 

Mock-n-stub

  • 1. Mock'n'StubMock'n'Stub OCMock, OCMockito, Nocilla, OHHTTPStubs Sandboxи немногоOCMock, OCMockito, Nocilla, OHHTTPStubs Sandboxи немного
  • 2. Пирожок Без НиктоПирожок Без Никто • Создавать дополнительные объектыСоздавать дополнительные объекты • " "Создавать временную реализацию протокола" "Создавать временную реализацию протокола • Оставлять затычкиОставлять затычки #ifdef DEBUG ...#ifdef DEBUG ... • Всякие радости с бэкэндомВсякие радости с бэкэндом
  • 3.
  • 4. Вот эти ребятаВот эти ребята • OCMockOCMock • OCMockitoOCMockito • NocillaNocilla • OHHTTPStubsOHHTTPStubs • Sandboxи немного Sandboxи немного
  • 5. Два брата-акробатаДва брата-акробата • mock-Создавать объекты для классовmock-Создавать объекты для классов OCMClassMockOCMClassMock((aClassaClass)) MKTMockMKTMock((aClassaClass)) • mock-Создавать объекты для протоколовmock-Создавать объекты для протоколов OCMProtocolMockOCMProtocolMock((aProtocolaProtocol)) MKTMockProtocolMKTMockProtocol((aProtocolaProtocol)) • OCMockitoУ есть дополнительные методыOCMockitoУ есть дополнительные методы MKTMockObjectAndProtocolMKTMockObjectAndProtocol((aClassaClass,, aProtocolaProtocol)) MKTMockProtocolWithoutOptionalsMKTMockProtocolWithoutOptionals((aProtocolaProtocol)) • OCMockУ есть дополнительные методыOCMockУ есть дополнительные методы OCMStrictClassMockOCMStrictClassMock((aClassaClass)) OCMStrictProtocolMockOCMStrictProtocolMock((aProtocolaProtocol)) OCMPartialMockOCMPartialMock((aObjectaObject)) OCMObserverMockOCMObserverMock()()
  • 6. Stubbing methodsStubbing methods idid<ContentProviderProtocol> contentProvider = ...<ContentProviderProtocol> contentProvider = ... OCMStubOCMStub([contentProvider([contentProvider loadSomeValuesloadSomeValues]).]).andReturnandReturn((@[@1, @3, @2]@[@1, @3, @2]);); [[MKTGivenMKTGiven([contentProvider([contentProvider loadSomeValuesloadSomeValues])]) willReturnwillReturn::@[@1, @3, @2]@[@1, @3, @2]];]; OCMockitoOCMockito --willReturnwillReturn%primitiveTypeName%:aValue%primitiveTypeName%:aValue --willReturnStructwillReturnStruct:aStructPointer:aStructPointer objCTypeobjCType:aType:aType --willDowillDo:aBlock:aBlock --willThrowwillThrow:anException:anException OCMockOCMock ..andReturnandReturn(aValue)(aValue) ..andThrowandThrow(anException)(anException) ..andPostandPost(aNotification)(aNotification) ..andCallandCall(anObject, aSelector)(anObject, aSelector) ..andDoandDo(aBlock)(aBlock) ..andForwardToRealObjectandForwardToRealObject()()
  • 7. Chaining stub actionsChaining stub actions OCMStubOCMStub([contentProvider([contentProvider loadSomeValuesloadSomeValues]).]).andReturnandReturn((@[@1, @3,@[@1, @3, @2]@2]).).andThrowandThrow((willThrowwillThrow:anException);:anException); [[[[MKTGivenMKTGiven([contentProvider([contentProvider loadSomeValuesloadSomeValues])]) willReturnwillReturn::@[@1, @3, @2]@[@1, @3, @2]]] willThrowwillThrow:anException];:anException];
  • 8. Advanced stubbing methodsAdvanced stubbing methods NSMutableArrayNSMutableArray *mockArray = ...*mockArray = ... OCMStubOCMStub([mockArray([mockArray addObject:@1addObject:@1]);]); OCMArgOCMArg *arg =*arg = [[OCMArgOCMArg isKindOfClassisKindOfClass:[:[NSStringNSString classclass]];]]; OCMStubOCMStub([mockArray([mockArray addObjectaddObject:arg]).:arg]).andThrowandThrow(anException);(anException); OCMArgOCMArg --isNilisNil --isNotNilisNotNil --isNotEqualisNotEqual:aValue:aValue --isKindOfClassisKindOfClass:aClass:aClass --checkWithSelectorcheckWithSelector:aSelector:aSelector onObjectonObject:anObject:anObject --checkWithBlockcheckWithBlock:^:^BOOLBOOL((idid value)blockvalue)block [[MKTGivenMKTGiven([mockArray([mockArray containsObjectcontainsObject::startsWithstartsWith((@"tes"@"tes")]))]) willReturnBoolwillReturnBool::YESYES];];
  • 9. Verifying interactionsVerifying interactions NSMutableArrayNSMutableArray *mockArray = ...*mockArray = ... [mockArray[mockArray removeObjectremoveObject::@"This is a test"@"This is a test"];]; [[MKTVerifyMKTVerify(mockArray)(mockArray) removeObjectremoveObject::startsWithstartsWith((@"This is"@"This is")];)]; OCMVerifyOCMVerify([mockArray([mockArray removeObjectremoveObject::startsWithstartsWith((@"This is"@"This is")]);)]); OCMExpectOCMExpect([mockArray([mockArray removeObjectremoveObject::startsWithstartsWith((@"This is"@"This is")]);)]); OCMExpectOCMExpect([mockArray([mockArray removeAllObjectsremoveAllObjects]);]); ...... OCMVerifyAllOCMVerifyAll(classMock)(classMock)
  • 10. NocillaNocilla + (+ (voidvoid)setUp)setUp {{ [[[[LSNocillaLSNocilla sharedInstancesharedInstance]] startstart];]; }} - (- (voidvoid)setUp)setUp {{ [[[[LSNocillaLSNocilla sharedInstancesharedInstance]] clearStubsclearStubs];]; }} + (+ (voidvoid)tearDown)tearDown {{ [[[[LSNocillaLSNocilla sharedInstancesharedInstance]] stopstop];]; }}
  • 11. Stubbing requestsStubbing requests stubRequeststubRequest((@"GET"@"GET",, @"http://mockingbird.getsandbox.com/selectedColor"@"http://mockingbird.getsandbox.com/selectedColor")) ..withHeaderswithHeaders((@{@{@"Accept"@"Accept":: @"application/json"@"application/json"}})) ..andReturnandReturn((200200)) ..withHeaderswithHeaders((@{@{@"Content-Type"@"Content-Type":: @"application/json"@"application/json"}})) ..withBodywithBody((@"{"selectedColor":[1, 0, 0, 1]}"@"{"selectedColor":[1, 0, 0, 1]}");); andReturnRawResponseandReturnRawResponse(aData);(aData); andFailWithErrorandFailWithError(anError);(anError);
  • 12. OHHTTPStubsOHHTTPStubs [[OHHTTPStubsOHHTTPStubs stubRequestsPassingTeststubRequestsPassingTest:^:^BOOLBOOL((NSURLRequestNSURLRequest *request) {*request) { ...... returnreturn isRequestAcceptedByStub;isRequestAcceptedByStub; }} withStubResponsewithStubResponse:^:^OHHTTPStubsResponseOHHTTPStubsResponse*(*(NSURLRequestNSURLRequest *request) {*request) { returnreturn httpStubsResponse;httpStubsResponse; }];}]; OHHTTPStubsResponseOHHTTPStubsResponse ++ responseWithDataresponseWithData::statusCode:headersstatusCode:headers:: ++ responseWithFileAtPathresponseWithFileAtPath::statusCode:headersstatusCode:headers:: ++ responseWithErrorresponseWithError:: ++ responseWithJSONObjectresponseWithJSONObject::statusCodestatusCode::headersheaders:: ++ responseWithHTTPMessageDataresponseWithHTTPMessageData:: ++ responseNamed:inBundleresponseNamed:inBundle::
  • 14.
  • 15. Всем спасибо за внимание!Всем спасибо за внимание! • OCMock -OCMock - http://ocmock.org/http://ocmock.org/ • OCMockito -OCMockito - https://github.com/jonreid/OCMockitohttps://github.com/jonreid/OCMockito • Nocilla -Nocilla - https://github.com/luisobo/Nocillahttps://github.com/luisobo/Nocilla • OHHTTPStubs -OHHTTPStubs - https://github.com/AliSoftware/OHHTTPStubshttps://github.com/AliSoftware/OHHTTPStubs • Sandbox -Sandbox - https://getsandbox.com/https://getsandbox.com/