Поместите их в отдельные методы, чтобы вы могли составить их в других данностях. Кроме того, используйте подчеркивание для замены пробелов (вместо верблюжьего падежа). Также создайте метод Given_that
, который принимает параметры Action
делегатов.
protected void Given_that(params Action[] preconditions)
{
foreach (var action in preconditions)
{
action();
}
}
...
protected void a_product_is_set_up_for_injection()
{
...
}
protected void product_image_factory_is_stubbed()
{
...
}
etc...
...
Given_that(a_product_is_set_up_for_injection,
product_image_factory_is_stubbed,
product_size_is_stubbed,
drawing_scale_is_stubbed,
product_type_is_stubbed);
При этом, я думаю, что названия ваших предварительных условий не являются BDD. Они носят технический характер и не обозначают потребности бизнеса. Если бы вы сказали непрограммисту, что вы тестировали, вы бы, вероятно, не сказали «продукт заглушен для инъекции». Вы бы скорее сказали
Given a displacement product
that is a two inch rectangular diffuser
that has a random position
that has a bitmap
that has a size bounded by feet
that has the expected pixels per foot
Теперь вы можете составлять ваши "данные" методы с небольшим дублированием:
protected [the type of your test class] Given(params Action given)
{
given();
return this;
}
protected void That(params Action[] preconditions)
{
foreach (var precondition in preconditions)
{
precondition();
}
}
Given(a_displacement_product)
.That(is_a_two_inch_rectangular_diffuser,
has_a_random_position,
has_a_bitmap,
has_a_size_bounded_by_feet,
has_the_expected_pixels_per_foot);