コード例 #1
0
        public async Task AddNewCustomerSuccessTest()
        {
            ISmsService smsService = A.Fake <ISmsService>();

            A.CallTo(() => smsService.SendSms(A <string> .Ignored, A <string> .Ignored, A <CancellationToken> .Ignored))
            .Returns(Task.CompletedTask);

            using (CrmPortalTestEnv testEnv = new CrmPortalTestEnv(new TestEnvironmentArgs
            {
                AdditionalDependencies = (dependencyManager, services) =>
                {
                    dependencyManager.RegisterInstance(smsService);
                }
            }))
            {
                var token = await testEnv.Server.LoginWithCredentials("User1", "P@ssw0rd", "CrmPortal", "secret");

                ICustomersController customersControllerClient = testEnv.Server.BuildRefitClient <ICustomersController>(token);

                Customer customer = await customersControllerClient.AddNewCustomer(new Customer
                {
                    FirstName    = "C1",
                    LastName     = "C1",
                    NationalCode = "1270340050",
                    PhoneNo      = "09123456789"
                }, CancellationToken.None);

                Assert.AreNotEqual(Guid.Empty, customer.Id);

                A.CallTo(() => smsService.SendSms("09123456789", "Welcome C1 C1", A <CancellationToken> .Ignored))
                .MustHaveHappenedOnceExactly();

                CustomersController customersController = TestDependencyManager.CurrentTestDependencyManager
                                                          .Objects.OfType <CustomersController>()
                                                          .Single();

                A.CallTo(() => customersController.AddNewCustomer(A <Customer> .That.Matches(c => c.FirstName == "C1" && c.LastName == "C1"), A <CancellationToken> .Ignored))
                .MustHaveHappenedOnceExactly();
            }
        }