Carna is a BDD (Behavior Driven Development) style testing and specification framework for .NET Platform.
[Feature("Transfer")] class TransferFeature { [Story( "Transferring money between accounts", Benefit = "to manage my money more efficiently", Role = "a bank client", Feature = "to transfer funds between my accounts whenever I need to" )] class Story01 : FixtureSteppable { Client Client { get; set; } = default!; [Scenario("Transferring money to a savings account")] void Scenario01() { Given("Tess has a Current account with $1,000", () => { Client = new Client("Tess"); Client.Opens(BankAccount.Of(AccountType.Current).WithBalance(1000)); }); Given("a Savings account with $2,000", () => Client.Opens(BankAccount.Of(AccountType.Savings).WithBalance(2000)) ); When("she transfers $500 from the Current account to the Savings account", () => TransferApi.Amount(500) .From(Client.GetAccount(AccountType.Current)) .To(Client.GetAccount(AccountType.Savings)) ); Then("she should have $500 in her Current account", () => Client.GetAccount(AccountType.Current).Balance == 500 ); Then("she should have $2,500 in her Savings account", () => Client.GetAccount(AccountType.Savings).Balance == 2500 ); } [Scenario("Transferring with insufficient funds")] void Scenario02() { Given("Tess has a Current account with $1,000", () => { Client = new Client("Tess"); Client.Opens(BankAccount.Of(AccountType.Current).WithBalance(1000)); }); Given("a Savings account with $2,000", () => Client.Opens(BankAccount.Of(AccountType.Savings).WithBalance(2000)) ); When("she transfers $1,500 from the Current account to the Savings account", () => TransferApi.Amount(1500) .From(Client.GetAccount(AccountType.Current)) .To(Client.GetAccount(AccountType.Savings)) ); Then<InsufficientFundsException>("she should receive an 'insufficient funds' error"); Then("she should have $1,000 in Current account", () => Client.GetAccount(AccountType.Current).Balance == 1000 ); Then("she should have $2,000 in her Savings account", () => Client.GetAccount(AccountType.Savings).Balance == 2000 ); } } }
> dotnet carna-runner -------------------------------------------- Carna Console Runner 3.0.0 -------------------------------------------- Feature: Transfer - Passed Story: Transferring money between accounts - Passed In order to manage my money more efficiently As a bank client I want to transfer funds between my accounts whenever I need to Scenario: Transferring money to a savings account - Passed Given Tess has a Current account with $1,000 - Passed And a Savings account with $2,000 - Passed When she transfers $500 from the Current account to the Savings account - Passed Then she should have $500 in her Current account - Passed And she should have $2,500 in her Savings account - Passed Scenario: Transferring with insufficient funds - Passed Given Tess has a Current account with $1,000 - Passed And a Savings account with $2,000 - Passed When she transfers $1,500 from the Current account to the Savings account - Passed Then she should receive an 'insufficient funds' error - Passed And she should have $1,000 in Current account - Passed And she should have $2,000 in her Savings account - Passed Run Summary Total Count: 2, Passed: 2, Pending: 0, Failed: 0 Start Time: 2024-07-17 07:57:59Z End Time: 2024-07-17 07:57:59Z Duration: 0.020 seconds
Carna |
|
carna-runner |
|
Carna.Runner |
|
Carna.ConsoleRunner |
|
Carna.WinUIRunner |
|