语境
我对 .NET 比较陌生,并决定在项目中使用 BDD。我为此使用 Specflow。
我使用 Gherkin 格式创建了一个功能文件并生成了步骤定义。
我正在使用 Selenium 将我的功能文件中的表中的信息插入到网页中,并且我正在使用 MSTest 来测试结果。
我的步骤定义
[Binding]
public class RegisterSteps
{
private IWebDriver ff = new FirefoxDriver();
private string username = "";
[Given(@"you are on the register page")]
public void GivenYouAreOnTheRegisterPage()
{
ff.Navigate().GoToUrl("http://localhost:55475/Register");
}
[Given(@"you enter the following information")]
public void GivenYouEnterTheFollowingInformation(TechTalk.SpecFlow.Table table)
{
username = table.Rows[6]["Value"];
for (var i = 0; i < table.RowCount; i++)
{
var field = table.Rows[i]["Field"];
var value = table.Rows[i]["Value"];
field = "mainContentPlaceHolder_TextBox" + field.Replace(" ", string.Empty);
ff.FindElement(By.Id(field)).SendKeys(value);
}
}
[When(@"you click submit")]
public void WhenYouClickSubmit()
{
ff.FindElement(By.Id("mainContentPlaceHolder_Submit")).Click();
}
[Then(@"you should see the message ""(.*)""")]
public void ThenYouShouldSeeTheMessage(string expectedMessage)
{
string message = ff.FindElement(By.Id("mainContentPlaceHolder_LabelSuccess")).Text;
Assert.AreEqual(message, expectedMessage);
}
[Then(@"a record should be added to the table")]
public void ThenARecordShouldBeAddedToTheTable()
{
RiskClassesDataContext db = new RiskClassesDataContext();
var query = from ao in db.ActionOwners
where ao.username.Equals(username)
select ao;
Assert.IsNotNull(query.First());
}
}
问题
我希望能够在我的步骤定义中使用 Linq 来检查记录是否被插入到各种表中。上面的代码
NullReferenceException
在RiskClassesDataContext()
. 我之前已经能够创建 RiskClassesDataContext 的实例,所以我想知道这是否是因为我试图从我的 Specflow 项目而不是从我的 Web 应用程序中执行此操作。我的最后一个问题是您是否认为这是测试我的项目的最佳方法。带有数据库查询的 selenium 是否可以测试我的整个项目,或者我最好使用 Moq。或者两者兼而有之?
非常感谢