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     }


Discussion

No Comment Found

Related InterviewSolutions