1

我正在尝试创建一个测试,它需要一个表,解析表以创建表的子集。使用 CreateSet 来使用我现有的类型。

我遇到的问题是我想根据传递的表值创建不同的列表。

举些例子:

那么:有价值观

名称|其他信息 |isApple|isOrange|isMango|

ex1 |一些信息,其他信息|真|假|假|

ex2 |一些信息,其他信息|真|真|真|

我想使用 CreateSet 根据这些标志创建表的子集列表。

就像是

List<apples> apples = table.CreateSet<apples>(only get apples).ToList();

但我尝试过的每一个 liq 语句都失败了。我如何在这里做“只得到苹果”部分?

**注意:我想使用的类型也没有这些标识符标志,这些只是在表中。

4

1 回答 1

1

简而言之,你不能。您只放 get apples的参数的智能感知显示它是Func<T> methodToCreateEachInstance.

但这并不意味着没有其他方法

Feature: SpecFlowFeature1
In order to help people on StackOverflow
As a helpful soul
I want to discover how to use CreateSet

Scenario: Retreive and filter a table
  Given I have some values:
      | name | otherinfo          | isApple | isOrange | isMango |
      | ex1  | someinfo,otherinfo | true    | false    | false   |
      | ex2  | someinfo,otherinfo | true    | true     | true    |
  Then MyApples should not be empty

在你的绑定中

//using TechTalk.SpecFlow.Assist;
using Should;

public class Example
{
    public string name { get; set; }
    public string otherInfo { get; set; }
}

[Binding]
public class StepBindings
{
    public IEnumerable<Example> MyApples { get; set; }

    [Given(@"I have some values:")]
    public void GivenIHaveSomeValues(Table table)
    {
        var onlyApples = table.Rows.Where(x => bool.Parse(x["isApple"]));

        MyApples = from x in onlyApples
                   select new Example
                   {
                       name = x["name"],
                       otherInfo = x["otherInfo"]
                   };
    }

    [Then(@"MyApples should not be empty")]
    public void ThenMyApplesShouldNotBeEmpty()
    {
        MyApples.ShouldNotBeNull();
        MyApples.ShouldNotBeEmpty();
    }

}
于 2013-03-20T07:52:19.317 回答