Sobre los frameworks de BDD

BDD como idea original me parece correctísima. No obstante, la mayoría de los frameworks para llevar sus conceptos a cabo en C# me parecen ridículos. Veamos una misma prueba de ejemplo escrita de dos maneras:

Alternativa 1:

[Subject(typeof(Account), "Funds tranfer")]
public class When_transferring_between_two_accounts
{
static Account fromAccount;
static Account toAccount;

Establish context = () =>
{
fromAccount = new Account { Balance = 1m };
toAccount = new Account { Balance = 1m };
};

Because of = () => fromAccount.Transfer(1m, toAccount);

It should_debit_the_from_account_by_the_amount_transferrend = () =>
fromAccount.Balance.ShouldEqual(0m);

It should_credit_the_to_account_by_the_amount_transferrend = () =>
toAccount.Balance.ShouldEqual(2m);
}

Alternativa 2:

[TestFixture]
public class TransferringSpces
{
[Test]
public void It_should_debit_from_source_account_and_credit_to_target_account()
{
var fromAccount = new Account(balance: 1m);
var toAccount = new Account(balance: 1m);

fromAccount.Transfer(1m, toAccount);

Assert.That(toAccount.Balance, Is.EqualTo(2m));
Assert.That(fromAccount.Balance, Is.EqualTo(0m));
}
}

¿Es la primera prueba más clara que la segunda?, ¿Ayudan todos esos delegados (Establish, Because, It) a comunicar mejor el comportamiento del método que hace la transferencia?

Sin categoría

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *