MSpec Установить делегата
Согласно документации MSpec, установка должна выполняться только один раз. Тем не менее, когда я отлаживаю, установить установить один раз для его делегата. Вот простой пример:
public class TestExample
{
Establish arrange = () =>
{
a = 5;
};
Because of = () => a = a * 2;
It should_be1 = () => a.ShouldEqual(10);
It should_be2 = () => a.ShouldBeGreaterThan(9);
It should_be3 = () => a.ShouldBeLessThan(90);
private static int a;
}
Должен ли он запускаться один раз за делегата? Или один раз за урок?
1 ответ
Это один раз для контекста (класса) - если только у него нет базового класса, и в этом случае сначала запускается базовый класс Installize (рекурсивно, настолько глубоко, как дерево наследования классов).
Как вы определяете, что он выполняется несколько раз?
Во всяком случае, я не могу воспроизвести это поведение, используя MSpec 0.9.0, бегун ReSharper и точный код из вопроса. Все спецификации выполняются, а команда Installize выполняется один раз, как и ожидалось.
Посыпать несколько Console.WriteLine()
следующее:
using System;
using Machine.Specifications;
namespace Stackru_26809460
{
public class TestExample
{
static int a;
Establish arrange = () =>
{
a = 5;
Console.WriteLine("Establish");
};
Because of = () => a = a*2;
It should_be1 = () =>
{
a.ShouldEqual(10);
Console.WriteLine("should_be1");
};
It should_be2 = () =>
{
a.ShouldBeGreaterThan(9);
Console.WriteLine("should_be1");
};
It should_be3 = () =>
{
a.ShouldBeLessThan(90);
Console.WriteLine("should_be1");
};
}
}
Когда я запускаю это в командной строке, я получаю:
Спецификации в Stackru_26809460: TestExample установить should_be1 "Должно быть1 should_be1 "Должно быть2 should_be1 "Должно быть3 Контексты: 1, Технические характеристики: 3, Время: 0,53 секунды C:\Users\Tim\Projects\Stackru\Stackru_26809460\ Bin\Debug>
Это похоже на проблему бегуна для меня...