InterviewSolution
Saved Bookmarks
| 1. |
Please look at the code segment below. If we compile it what happens? Explain |
|
Answer» Use dependency injection to redesign the classes and PROVIDE data from test METHODS protocol IBookStorage { func fetchAllBooks()->[Book] } class BookStorage: IBookStorage { func fetchAllBooks() -> [Book] { // return all available books } } class BooksManager { let bookStorage:IBookStorage INIT(bookStorage:IBookStorage) { self.bookStorage = bookStorage } func physicsBooks() -> [Book] { let books = bookStorage.fetchAllBooks() // identify the physics book and return those let physicsbooks = … return physicsbooks } } class StubBookStorage: IBookStorage { var books = [Book]() init(books:[Book]) { self.books = books } func fetchAllBooks() -> [Book] { return books } } // Test methods func testBookManager() { let books = … // add STUB data you want to test let bookStorage = StubBookStorage(books: books) let bookManager = BooksManager(bookStorage: bookStorage) let physicsBooks = bookManager.physicsBooks() // test the value physicsBooks array if correct } |
|