Я думаю, твой код в порядке. Проблема заключается в плохо реализованном декодировании 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
Я проверил ссылку от tvanfosson и RikMigrations, и после того, чтобы играть с ними я предпочитаю насмешку datacontext метод лучше всего. Я понял, что не должен составлять таблицы и отбрасывать их все время.
После немного большего количества исследования я нашел статью http://stephenwalther.com/blog/archive/2008/08/17/asp-net-mvc-tip-33-unit-test-linq-to-sql.aspx Stephen Walther, чтобы мне кажется легче и более надежным.
Таким образом, я иду с этой реализацией.
Спасибо за справку.
То, что я делаю, определяют интерфейс для обертки DataContext и используют реализацию обертки для DataContext. Это позволяет мне использовать альтернативную, поддельную реализацию DataContext в своих тестах (или дразнить ее, если легче). Это абстрагирует базу данных из моих модульных тестов полностью. Я нашел некоторый код начинающего по http://andrewtokeley.net/archive/2008/07/06/mocking-linq-to-sql-datacontext.aspx, хотя я расширил его так, чтобы он обработал реализации проверки на моих классах объекта.
Я должен также упомянуть, что у меня есть отдельный сервер подготовки для QA, таким образом, существует живое тестирование всей системы. Я просто не использую фактическую базу данных в своем поблочном тестировании.
Можно хотеть найти некоторый другой путь вокруг фактического удара базы данных для модульных тестов, потому что требуется намного больше времени. Однако Вы рассмотрели использование Миграций для создания / удаление Ваших таблиц вместо того, чтобы использовать sql сценарии? RikMigrations - то, что я использовал для создания моей базы данных, таким образом, я могу легко пересмотр весь мой код в одном месте. У Justin Etheredge есть большая статья об использовании RikMigrations.
В этой статье приводится пример имитации linq в sql с помощью typemock.
http://blog.benhall.me.uk/2007/11/how-to-unit-test-linq-to-sql-and.html
Рассмотрите следующие методы в DataContext:
http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.createdatabase.aspx