This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class BasketService { | |
private let repository: Repository<Article> | |
init(repository: Repository<Article>) { | |
self.repository = repository | |
} | |
func addAllArticles(to basket: Basket) { | |
let allArticles = repository.getAll() | |
basket.articles.append(contentsOf: allArticles) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class BasketServiceTests: XCTestCase { | |
func testAddAllArticles() { | |
let expectedArticle = Article(title: "Article 1") | |
let mockRepository = MockRepository<Article>(objects: [expectedArticle]) | |
let basketService = BasketService(repository: mockRepository) | |
let basket = Basket() | |
basketService.addAllArticles(to: basket) | |
XCTAssertEqual(basket.articles.count, 1) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class BasketViewController: UIViewController { | |
var basketService: BasketService! = nil | |
} | |
let basketViewController = BasketViewController() | |
basketViewController.basketService = BasketService() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class BasketViewController: UIViewController { | |
var basketService: BasketService = BasketService() | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protocol BasketFactory { | |
func makeBasketService() -> BasketService | |
func makeBasketViewController() -> BasketViewController | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class DefaultBasketFactory: BasketFactory { | |
func makeBasketService() -> BasketService { | |
let repository = makeArticleRepository() | |
return BasketService(repository: repository) | |
} | |
func makeBasketViewController() -> BasketViewController { | |
let basketViewController = BasketViewController() | |
basketViewController.basketService = makeBasketService() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let basketViewController = factory.makeBasketViewController() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protocol Resolver { | |
func resolve<ServiceType>(_ type: ServiceType.Type) -> ServiceType | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let resolver: Resolver = ... | |
let instance = resolver.resolve(SomeProtocol.self) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protocol ServiceFactory { | |
associatedtype ServiceType | |
func resolve(_ resolver: Resolver) -> ServiceType | |
} |
OlderNewer