{"id":8067806,"date":"2021-02-22T12:44:04","date_gmt":"2021-02-22T20:44:04","guid":{"rendered":"https:\/\/test-agilealliance.pantheonsite.io\/?post_type=aa_book&#038;p=8067806"},"modified":"2022-09-16T12:16:25","modified_gmt":"2022-09-16T19:16:25","slug":"ios-unit-testing-by-example-xctest-tips-and-techniques-using-swift","status":"publish","type":"aa_book","link":"https:\/\/agilealliance.org\/resources\/books\/ios-unit-testing-by-example-xctest-tips-and-techniques-using-swift\/","title":{"rendered":"iOS Unit Testing by Example: XCTest Tips and Techniques Using Swift"},"content":{"rendered":"<div>\n<div>\n<p>Fearlessly change the design of your iOS code with solid unit tests. Use Xcode\u2019s built-in test framework XCTest and Swift to get rapid feedback on all your code \u2014 including legacy code. Learn the tricks and techniques of testing all iOS code, especially view controllers (UIViewControllers), which are critical to iOS apps. Learn to isolate and replace dependencies in legacy code written without tests. Practice safe refactoring that makes these tests possible, and watch all your changes get verified quickly and automatically. Make even the boldest code changes with complete confidence.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Fearlessly change the design of your iOS code with solid unit tests. Use Xcode\u2019s built-in test framework XCTest and Swift to get rapid feedback on all your code \u2014 including [&hellip;]<\/p>\n","protected":false},"author":8033092,"featured_media":8067808,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","categories":[],"tags":[],"class_list":["post-8067806","aa_book","type-aa_book","status-publish","has-post-thumbnail","hentry"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/aa_book\/8067806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/aa_book"}],"about":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/types\/aa_book"}],"author":[{"embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/users\/8033092"}],"replies":[{"embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/comments?post=8067806"}],"version-history":[{"count":0,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/aa_book\/8067806\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/media\/8067808"}],"wp:attachment":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/media?parent=8067806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/categories?post=8067806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/tags?post=8067806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}