如何在继承类的规范中包括基类的规范?

| 我有一个“ 0”类,该类已被MSpec规范完全涵盖。我还有一个继承的课程,
MultimediaRSSDataSourceParser
。它具有所有父功能以及iTunes RSS扩展的识别功能。我在单独的规范中介绍了扩展功能。 但是,阅读测试套件的商人只能看到ѭ1的扩展规范。他们也想看看ѭ0继承的功能。 复制这些规范听起来很荒谬,并且可能会导致将来的代码管理问题。有什么方法可以从父级继承规范吗?     
已邀请:
        MSpec具有非常有用的行为,使这样的重用变得非常容易。 http://lostechies.com/jamesgregory/2010/01/18/behaviours-in-mspec/     
        我说这两种类型实现相同的接口,或者至少当您说“它完成所有父级[功能]”时被继承。您想使用MSpec的
Behaves_like
功能。   \“行为定义了可重复使用的规范,这些规范封装了您猜中的一组特定行为;然后,您可以将这些规范包含在表现出特定行为的任何上下文中。” – James Gregory 我不知道RSS数据源阅读器的工作原理,所以让我向您展示一些使用行为的示例代码。我需要将一些愚蠢的API的2的整数次幂(0、1、2、4等)转换为A-Z字符。因此,规格将是
It should_convert_0_to_A = () => _converter.Convert(0).ShouldEqual(\'A\');
It should_convert_1_to_B = () => _converter.Convert(1).ShouldEqual(\'B\');
// ... and so on ...
It should_convert_16777216_to_Z = () => _converter.Convert(16777216).ShouldEqual(\'Z\');
但是,我有接口的三种不同实现。它们包括二进制转换,日志转换和查找表。
public interface IUnitMaskConverter
{
    char Convert(uint mask);
}
我本来不想复制26个规格三遍或三遍以上!因此,我将规格设置为
Behaviors
[Behaviors]
public class UnitMaskConverterBehaviors
{
    It should_convert_0_to_A = () => _converter.Convert(0).ShouldEqual(\'A\');
    It should_convert_1_to_B = () => _converter.Convert(1).ShouldEqual(\'B\');
    // ... and so on ...
    It should_convert_16777216_to_Z = () => _converter.Convert(16777216).ShouldEqual(\'Z\');

    protected static IUnitMaskConverter _converter;
}
因此,编写一个specs类很容易,该类说明此实现的行为类似于“单元掩码转换器”
[Subject(typeof(IUnitMaskConverter))]
public class When_converting_unit_masks_by_lookup
{
    Behaves_like<UnitMaskConverterBehaviors> a_unit_mask_converter;
    protected static LookupUnitMaskConverter _converter = new LookupUnitMaskConverter();
}

[Subject(typeof(IUnitMaskConverter))]
public class When_converting_unit_masks_by_log
{
    Behaves_like<UnitMaskConverterBehaviors> a_unit_mask_converter;
    protected static LogUnitMaskConverter _converter = new LogUnitMaskConverter();
}

[Subject(typeof(IUnitMaskConverter))]
public class When_converting_unit_masks_by_binary
{
    Behaves_like<UnitMaskConverterBehaviors> a_unit_mask_converter;
    protected static BinaryUnitMaskConverter _converter = new BinaryUnitMaskConverter();
}
该报告甚至包含每个实现列出的所有行为。 IUnitMaskConverter规格 4种情况,108种规格 通过二进制转换单位掩码时 26个规格 应该将0转换为A 应该将1转换为B ... 应该将16777216转换为Z 通过查找转换单位蒙版时 26个规格 应该将0转换为A 应该将1转换为B ... 应该将16777216转换为Z     
        并非如此,因为RssDatasourceParser的测试套件可能包含在大量上下文中。这又意味着大量的写作。     

要回复问题请先登录注册