2011-01-08 16 views
15

Pracuję nad systemem, który korzysta z magazynu tabel Azure. W innych systemach (np. SQL, File based, itp.) Mogę napisać fałszywkę, która pozwala mi przetestować logikę trwałości danych. Nie widzę jednak łatwego sposobu na utworzenie fałszywego dla usługi tabeli Azure.Jak sfałszować Magazyn tabel Azure w .NET do testowania jednostek?

Mogę utworzyć nowy projekt IIS, który zachowuje się w ten sam sposób, ale to nie jest dobry sposób na napisanie testu jednostkowego, jest to raczej test integracyjny.

Masz pytania dotyczące sposobu sprawdzania kodu dostępu do danych testowych jednostki, który używa klienta magazynu tabel Azure?

Dzięki Erick

Odpowiedz

0

To jest coś, jestem obecnie rozważa się, ale nie próbowałem jeszcze.

TableServiceContext inherets od DataServiceContext, więc rysunek, jeśli można wstrzyknąć TableServiceContext jako DataServiceContext, można model Table Store za pomocą usług danych.

Idąc dalej, jeśli korzystasz z Entity Framework "Code First", aby utworzyć swój model encji - możesz po prostu użyć jednostek tabeli, które już utworzyłeś jako jednostki wspierające dla usługi danych, i wszystko powinno działać sprawnie .

Tej teorii przynajmniej. Nigdy tego nie próbowałem.

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.tableservicecontext_members.aspx

+0

Dzięki za odpowiedź. Jestem pewien, że całkowicie podążam - czy sugerujesz używanie usług WCF Data Services (lokalnie) jako celu testów tabel Azure? Jeśli tak, podoba mi się ten pomysł, ale obawiam się różnic między tymi dwoma. Daj mi znać, jeśli wypróbowałeś to i zrobię to samo. Dzięki! –

0

używam implementację w pamięci z ICloudTableStorage, które można przekazać do np ReliableCloudTableRepository.

można znaleźć kod tutaj: https://gist.github.com/4078750

+0

To prowadzi do pliku bez kodu. Nie wiem, co kiedyś zawierało, ale w tym momencie to nic. –

+0

@DanCsharpster Ah tak. Kiedy pierwotnie zamieszczono pytanie, myślę, że wszyscy używali pakietu Azure SDK CloudFx. Ostatecznie wycofałem moje uzasadnienie na korzyść klasy, która stała się dostępna w ich własnych bibliotekach, co jest teraz głównym stwierdzeniem: '// użyj Microsoft.Experience.CloudFx.Framework.Storage.InMemoryCloudTableStorage'. Możesz zobaczyć stary kod pod wersjami (https://gist.github.com/timiles/4078750/revisions), ale ponieważ jest on zależny od CloudFx, nie ma powodu, aby nie używać teraz swojej własnej klasy. Mogłem rozważyć przywrócenie go, ale zauważ, że Azure bardzo się zmieniło od 2012 roku. –

+0

Dzięki @Tim Iles! Sprawdzę to. Do zobaczenia, sprawdzam także emulator platformy Azure. Wygląda na to, że ma potencjał do testów integracyjnych. https://azure.microsoft.com/en-us/documentation/articles/storage-use-emulator/ –

0

Wiem, że istnieje kilka rozwiązań zamieszczone tutaj, ale tutaj jest jeden wymyśliłem:

http://azurator.blogspot.com/2013/07/unit-testing-azure-table-storage-queries.html

Jest to tylko rozwiązanie, gdy wyszukujesz obiekty używając CloudTableQuery<T>, ale bardzo mi to pomogło. Jeśli próbujesz uzyskać pełniejszą implementację, możesz również utworzyć podkładkę pod DataServiceContext.SaveChanges(), która może pomóc w aktualizacji.

0

Rozważałem to bardziej do testowania integracji, ale przypuszczam, że mogłoby to również zadziałać w przypadku testowania jednostkowego. Poznaj Azure Storage Emulator. To brzmi jak bardzo niesamowite narzędzie do testowania platformy Azure Blob, kolejki i tabel. Bawię się z nim i próbuję opublikować moje wyniki, jeśli pamiętam, aby to zrobić.

Powiązane problemy