КонтекстSpecflow как запросить базу данных с помощью Linq
Я относительно новым для .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, а не из своего веб-приложения.Последний вопрос: просто ли вы считаете, что это лучший подход для тестирования моего проекта. Является ли селен с запросами базы данных, чтобы проверить весь мой проект, или мне лучше использовать мок. Или, может быть, оба?
Большое спасибо
Что происходит, когда вы нажимаете кнопку? Почта? Или вызов javascript? –
Привет Крис. Это сообщение, которое происходит. –
Вот еще один вопрос, который может справиться с этим: http: // stackoverflow.com/questions/9022293/whats-the-alternative-to-use-thread-sleep-when-working-with-selenium-in-system –