Fixture内幕
你的fixture对表可以做任何他们想做的,包括增加行和单元格(参看TechnicalReference ,查找如何进行),但是大多数fixture仅仅标志单元格为对和错.这里由一些标记的规则:
- 绿色 Fixture比较单元格和软件,他们匹配
- 红色 (包括 "expected" 和 "actual" 部分): Fixture比较单元格和软件,他们不匹配
- 黄色: fixture有错误
- 灰色文本 在白底: 单元格是空,因此fixture显示自己的答案
- 黑色文本 灰底: fixture忽略单元格
这里有Fixture在表中查找的一些关键词:
- 一个完全的空格(Blank cell):Fixture试着在里面填充答案(它将给单元格着上面描述的灰白颜色)
- 单词"Blank":Fixture把它翻译为一个空字符串.(它这样做是因为一个实际是空的单元格意味者"给我一个答案",如前面提到一样)
- 单词"error": Fixture期望一个错误.如果错误发生,单元格将标着绿色,不是正常的黄色.
这些跟随你可以达到你自己目的的fixture.他们描述如下.简单的说,他们是:
- ColumnFixture
- RowFixture
- ActionFixture
- SummaryFixture
ColumnFixture 是最简单的一种编程fixture,也是最有用的一种,你应该经常使用ColumnFixture
一个ColumnFixture 是为表格里的单行所表达的例子的.一个表可以包含多个实例,一行一个,见下面:
为什么称之为"column"fixture呢?因为表中的每列映射你的fixture里的一个对象或者方法.FIT使用第二行列头实现映射.
当一个列头以括号结尾,fixture调用一个方法,而不是设置一个变量.fixture看看从方法返回的值,然后把它和表里面的值比较,然后根据情况着红色获绿色.
结果,所有这些使你写自己的ColumnFixture几乎是微不足道的.下图描述了上面用C#编写的Fixture:
ColumnFixtures从左到右,从上到下处理.根据上面的2个图,它好像是你和客户已经写了类似如下的代码:
// Row 1 StandardHours = 40; // the StandardHours column HolidayHours = 0; // the HolidayHours column Wage = new Currency("20"); // the Wage column CompareResults(new Currency($800), Pay()); // the Pay() column// Row 2 StandardHours = 45; HolidayHours = 0; Wage = new Currency("20"); CompareResults(new Currency($950), Pay());
// etc...
注意变量在行之间没有清除.
(work still in progress)