[Fact] public void FunctionalTest() { // arrange var expectedCustomer = new Customer("fist@sea.com"); var expectedReportBody = "the report body"; Func> getCustomersForCustomerReport = () => new[] {expectedCustomer}; Func createCustomerReport = customer => new Report(expectedCustomer.Email, expectedReportBody); var actualToAddress = ""; var actualBody = ""; Action sendEmail = (toAddress, body) => { actualToAddress = toAddress; actualBody = body; }; // act Functional.RunCustomerReportBatch(getCustomersForCustomerReport, createCustomerReport, sendEmail); // assert Assert.Equal(expectedCustomer.Email, actualToAddress); Assert.Equal(expectedReportBody, actualBody); }