是否将gherkin表值传递给IList <string>而不是支持常规字符串属性?</string>

时间:2013-09-26 18:37:54

标签: c# testing cucumber specflow gherkin

我有一个用小黄瓜写的表用于我正在传递值的对象:

    | Description | Perils |
    | foo         | 6      |

还有更多的值被传递,但上面这两个值是以此为例。

在绑定中,我正在检索此表数据并将其放入对象类型Cover中。它有一个名为Description的regualr属性,它可以从表中获取字符串foo并将其设置为该属性。不过我的问题是Perils。这不是常规属性,而是IList<string>。我想以某种方式将值6从Perils传递给该属性,但AssistHelper可能不支持。我已经尝试将标题更改为Peril[0],尽管我知道这是毫无意义的。有什么建议吗?

var tempTable = table.CreateInstance<Cover>();
var thisNeedsToBeSix = tempTable.Perils[0];  

2 个答案:

答案 0 :(得分:0)

如何让你的危险参数只是一个string,然后使用string.Split()在你的绑定中分解它?

答案 1 :(得分:0)

如果您的SpecFlow测试仅使用一个Peril,那么您可以创建一个CoverWrapper而不是直接使用Cover。例如

绑定可能如下所示:

[Given(@"Given I entered the following data into the new form:")]
public void x(Table table)
{
    var coverWrapper = table.CreateInstance<CoverWrapper>();
}

CoverWrapper看起来像:

public class CoverWrapper
{
 private Cover cover;

 public CoverWrapper()
 {
  cover = new Cover();
 }

 public string Description
 {
  get
  {
   return cover.Description;
  }
  set
  {
   cover.Description = value;
  }
 }

 public string Peril
 {
  get
  {
   return cover.Perils[0];
  }
  set
  {
   cover.Perils.Add(value);
  }
 }

 public GetCover()
 {
  return cover;
 }
}

然后,您可以调用coverWrapper.GetCover()来根据需要返回Cover的实例。

请注意,如果某些内容不太正确,我还没有编译该代码,所以道歉。