0

Я пишу тесты пробного потока, и я хотел бы запустить из базы данных в памяти, чтобы тесты быстрее выполнялись и имели больший контроль над моими данными.Как использовать фальшивый datacontext для тестов Specflow

В настоящее время: Использование Единицы жизни Работы для DataContext http://blog.stevensanderson.com/2007/11/29/linq-to-sql-the-multi-tier-story/

Используя поддельный контекст создать подобные: http://refactorthis.wordpress.com/2011/05/31/mock-faking-dbcontext-in-entity-framework-4-1-with-a-generic-repository/

Как я могу использовать этот фальшивый контекст с Specflow? Я не могу получить доступ к текущему синтаксису dbcontext из Specflow, поэтому я не могу просто установить поддельный datacontext и повлиять на текущие тесты.

Могу ли я как-то сказать мой сайт, что я тестирую в specflow и использовать fakecontext в этом сценарии? Должен ли я использовать кнопку или параметр url или есть что-то еще, что я могу сделать?

ответ

0

Как я могу использовать этот поддельный контекст с помощью Specflow? Я не могу получить доступ к текущему синтаксису dbcontext из Specflow, поэтому я не могу просто установить поддельный datacontext и повлиять на текущие тесты.

Так как вы на самом деле не сказали, что ваша ошибка, я собираюсь сделать дикую догадку, что internal static class FakeContext объявлен в собрании отличается от того, что были объявлены тесты SpecFlow. Если это так, то вам нужно добавить

[assembly:InternalsVisibleTo("MyApplication.SpecFlowTests")] //name of the test assembly 

к AssemblyInfo.cs Ассамблеи, которая включает в себя FakeContext.

Или также объявите класс public.

Могу ли я каким-то образом сообщить своему сайту, что я тестирую в specflow и использовать fakecontext в этом сценарии? Должен ли я использовать кнопку или параметр url или есть что-то еще, что я могу сделать?

Вы можете сообщить веб-сайту, что вы его тестируете, но если какой-то злой человек узнает последовательность, чтобы сделать это на производстве, у вас возникнут проблемы.

Поскольку вы говорите о насмехании своей базы данных и тестировании веб-сайта, я предполагаю, что вы используете ATDD (см. Последний абзац Development_style), то лучшим подходом было бы автоматизировать хостинг вашего веб-сайта одновременно что вы запускаете свой браузер в автоматическом режиме (обычно через Selenium). Таким образом, вы можете контролировать, как ваш сайт выбирает свою базу данных, не раскрывая эту функциональность всему миру.

+0

Я вижу сборку и доступ к статическому контексту, но значения, установленные в моем проекте приемочных испытаний, не распространяются на мой веб-сайт (или наоборот). – rickjr82

+0

Я не был слишком обеспокоен тем, что кто-то узнал, как запустить его против поддельной базы данных (я определенно ее рассматривал), так как они не смогли бы вносить какие-либо изменения, которые сохранялись. – rickjr82

+0

Я пытаюсь запустить это в VS2010 - предлагаете ли вы запустить сервер разработки ASP.NET определенным образом при запуске из проекта приемочных тестов? – rickjr82

Смежные вопросы