Повторное использование спецификаций NSpec
Я недавно начал с NSpec, и теперь я не уверен, как масштабировать это.
Каков наилучший способ повторного использования спецификаций (it["something"] = () => {};
)?
Допустим, у меня есть интерфейс IMyService
и 2 класса, которые это реализуют: Service1
а также Service2
,
Теперь я хочу написать спецификации, которые применяются в IMyservice
уровень, и запустить их против моих 2 классов реализации.
Может быть, я что-то здесь упускаю, но я могу найти простой способ сделать это.
1 ответ
Решение
Вы можете использовать абстрактный класс для повторного использования спецификации. Вот пример:
/*
Output:
describe Service1
it should do this
it should also do this
specify something unique to service1
describe Service2
it should do this
it should also do this
specify something unique to service2
*/
abstract class some_shared_spec : nspec
{
public IMyservice service;
void it_should_do_this()
{
}
void it_should_also_do_this()
{
}
}
class describe_Service1 : some_shared_spec
{
void before_each()
{
service = new Service1();
}
void specify_something_unique_to_service1()
{
}
}
class describe_Service2 : some_shared_spec
{
void before_each()
{
service = new Service2();
}
void specify_something_unique_to_service2()
{
}
}