ASP.NET MVC TDD с LINQ и базой данных SQL

Я думаю, твой код в порядке. Проблема заключается в плохо реализованном декодировании URL на стороне Yahoo. Java URL Encode кодируется прописными буквами, а .net HTTPUtility.URLEncode - строчными. Я создал метод расширения для строки, которая исправит проблему и закодирует URL так, чтобы API-интерфейс Yahoo мог справиться с этим. После этого все работало хорошо (у меня была та же проблема, что и у вас).

  <Extension>
    Public Function UppercaseURLEncode(ByVal sourceString As String) As String

        Dim temp As Char() = HttpUtility.UrlEncode(sourceString).ToCharArray()

        For i As Integer = 0 To temp.Length - 2

            If temp(i).ToString().Equals("%", StringComparison.OrdinalIgnoreCase) Then

                temp(i + 1) = Char.ToUpper(temp(i + 1))
                temp(i + 2) = Char.ToUpper(temp(i + 2))

            End If

        Next

        Return New String(temp)

    End Function
6
задан tereško 13 July 2012 в 08:02
поделиться

5 ответов

Я проверил ссылку от tvanfosson и RikMigrations, и после того, чтобы играть с ними я предпочитаю насмешку datacontext метод лучше всего. Я понял, что не должен составлять таблицы и отбрасывать их все время.

После немного большего количества исследования я нашел статью http://stephenwalther.com/blog/archive/2008/08/17/asp-net-mvc-tip-33-unit-test-linq-to-sql.aspx Stephen Walther, чтобы мне кажется легче и более надежным.

Таким образом, я иду с этой реализацией.

Спасибо за справку.

2
ответ дан 10 December 2019 в 02:55
поделиться

То, что я делаю, определяют интерфейс для обертки DataContext и используют реализацию обертки для DataContext. Это позволяет мне использовать альтернативную, поддельную реализацию DataContext в своих тестах (или дразнить ее, если легче). Это абстрагирует базу данных из моих модульных тестов полностью. Я нашел некоторый код начинающего по http://andrewtokeley.net/archive/2008/07/06/mocking-linq-to-sql-datacontext.aspx, хотя я расширил его так, чтобы он обработал реализации проверки на моих классах объекта.

Я должен также упомянуть, что у меня есть отдельный сервер подготовки для QA, таким образом, существует живое тестирование всей системы. Я просто не использую фактическую базу данных в своем поблочном тестировании.

4
ответ дан 10 December 2019 в 02:55
поделиться

Можно хотеть найти некоторый другой путь вокруг фактического удара базы данных для модульных тестов, потому что требуется намного больше времени. Однако Вы рассмотрели использование Миграций для создания / удаление Ваших таблиц вместо того, чтобы использовать sql сценарии? RikMigrations - то, что я использовал для создания моей базы данных, таким образом, я могу легко пересмотр весь мой код в одном месте. У Justin Etheredge есть большая статья об использовании RikMigrations.

1
ответ дан 10 December 2019 в 02:55
поделиться

В этой статье приводится пример имитации linq в sql с помощью typemock.

http://blog.benhall.me.uk/2007/11/how-to-unit-test-linq-to-sql-and.html

0
ответ дан 10 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: