如何在表中过滤CreateSet

时间:2013-03-17 15:41:10

标签: specflow

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

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

例如:

  

然后:有值

     

name | otherinfo | isApple | isOrange | isMango |

     

ex1 | someinfo,otherinfo | true | false | false |

     

ex2 | someinfo,otherinfo | true | true | true |

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

类似

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

但我尝试的每个liq声明都失败了。我如何在这里做“只有苹果”部分?

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

1 个答案:

答案 0 :(得分:1)

总之,你不能。您将仅获取苹果的参数的智能感知显示为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();
    }

}