public void BasicProcessingOrchestratesFine() { var lines = new[] { "book1|1.5" }; var books = new[] { new Book { Title = "book1", Price = 1.5M } }; A.CallTo(() => _bookDataProviderFake.GetBookData()).Returns(lines); A.CallTo(() => _bookParserFake.Parse(lines)).Returns(books); A.CallTo(() => _bookStorageFake.Persist(books)).DoesNothing(); _bookProcessor.ProcessBooks(); A.CallTo(() => _bookDataProviderFake.GetBookData()).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(() => _bookParserFake.Parse(lines)).MustHaveHappened(Repeated.Exactly.Once); A.CallTo(() => _bookStorageFake.Persist(books)).MustHaveHappened(Repeated.Exactly.Once); }