示例#1
0
        public async Task TimeBudget_throws_an_informative_exception_if_no_time_is_left()
        {
            var budget = new TimeBudget(5.Seconds());

            await Clock.Current.Wait(1.Seconds());

            budget.RecordEntry("one");

            await Clock.Current.Wait(10.Seconds());

            Action action = () => budget.RecordEntryAndThrowIfBudgetExceeded("two");

            action.ShouldThrow <BudgetExceededException>()
            .Which
            .Message
            .Should()
            .Be($"Budget of 5 seconds exceeded.{NewLine}" +
                $"  ✔ one @ 1.00 seconds{NewLine}" +
                $"  ❌ two @ 11.00 seconds (budget of 5 seconds exceeded by 6.00 seconds.)");
        }