我一直在试图弄清楚如何将Scenario大纲示例解析为(自定义)对象,而无需在步骤名称中明确使用它。
Scenario Outline: Customer makes an appointment
Given The user enters details on the page
When The user submits the page
Then The appointment details are shown.
Examples:
| Reason | Firstname | Lastname | Email |
| A | John | Doe | [email protected] |
| B | Jane | Doe | [email protected] |
我现在试图找出如何将示例行解析为自定义Appointment对象
我一直在用表格查看CreateInstance,但这似乎并没有起作用
[Given(@"The user enters details on the page")]
public void EnterDetails(Table table)
{
var appointment = table.CreateInstance<Appointment>();
driver.FindElement(By.Id("Firstname")).SendKeys(appointment.Firstname);
}
运行时遇到错误
Message: TechTalk.SpecFlow.BindingException : Parameter count mismatch! The binding method EnterDetails(Table)' should have 0 parameters
这是预约课程
public class Appointment
{
public AppointmentReason Reason { get; set; }
public string Firstnam { get; set; }
public string Lastname { get; set; }
public string Email { get; set; }
}
谁可以指出我正确的方向如何将示例行解析为约会对象?
您没有向Given函数传递任何参数,这就是它抛出异常的原因。您可以传入这样的表格:
Scenario Outline: Customer makes an appointment
Given The user enters details on the page
| Reason | Firstname | Lastname | Email |
| <Reason> | <Firstname> | <Lastname> | <Email> |
When The user submits the page
Then The appointment details are shown.
Examples:
| Reason | Firstname | Lastname | Email |
| A | John | Doe | [email protected] |
| B | Jane | Doe | [email protected] |
给定步骤内的尖括号是参数。在这种情况下放在一个表中。参数取自示例中的表,因为您正在使用场景大纲。