2011-02-28 45 views
7

我正在使用ASP.NET MVC 3構建REST API。我正在使用SpecFlow以NUnit作爲測試運行器來執行BDD樣式。ASP.NET中的跨進程嘲諷

由於它是一個REST API,所以測試Url:s顯然非常重要,所以我希望能夠在規範中進行真正的HTTP調用。

我現在正在尋找如何獲得跨進程嘲笑去的提示。簡而言之,我想用我在Specs中生成的實體來模擬數據層。

在Rails應用程序中,我會使用Webrat進行此操作。有沒有什麼等同於.NET中的呢?

我已經嘗試過Deleporter但它似乎並沒有能夠「發送」先進結構(在Deleporter創建工作在規範一個簡單的字符串,並使用它,但不自定義類的屬性全部變爲空)

有沒有人有經驗或提示如何做到這一點?我正在嘗試在Deleporter中做的事情是這樣的(我知道我可以在Deleporter代碼中生成模型,但這是一個簡化的例子,所以這對我不起作用):

var models = Builder<Foo>.CreateListOfSize(300); 
Deleporter.Run(() => 
{ 
    var mockService = new Mock<IFooService>(); 
    // Models will be a list of 300 Foos but the foos properties will all be null 
    mockService.Setup(s => s.GetStuff()).Returns(models); 
    ObjectFactory.Inject(mockService.Object); 
}); 
+0

這聽起來像是要避免的事情。你能詳細說明你爲什麼要這樣做嗎? – JontyMC 2011-03-02 15:29:14

+1

我認爲Deleporter的作者解釋了爲什麼你想在他的博客文章中做到這一點很好, http://blog.stevensanderson.com/2010/03/09/deleporter-cross-process-code-injection-for-aspnet/將應用程序配置更改爲測試以查看示例...我想測試我的整個應用程序我的規格,而不僅僅是控制器.. – ullmark 2011-03-02 16:54:09

+0

我想從外部測試我的應用程序。由於它是一個Rest API,首先要測試的是HTTP調用... – ullmark 2011-03-02 16:56:01

回答

-1

我想你可能尋找WatiN

+0

WatiN允許這種跨進程嘲笑OP描述? – 2011-02-28 17:09:09

+0

WatiN基本上會爲您打開一個瀏覽器窗口並進行一種集成測試。這對於API測試並不理想,但它是我在那裏看到的唯一選擇。我知道有一段時間關於爲.NET創建Webrat的問題,但我不確定任何人都可以使用它。 – 2011-02-28 17:14:27

+0

我的印象是,WatiN隨意啓動瀏覽器並執行您在代碼中所做的任何操作。無法在網絡應用程序中注入任何東西? – ullmark 2011-02-28 17:31:37

1

我只是這個調查自己。看一些example code in the GuestBookDemo它似乎可以使用Deleporter爲此。

你有沒有一個你想要做什麼的例子?

+0

我添加了一些關於我在deleporter中想要做的更多信息。我將我的實體存儲在RavenDB中,並且現在已被告知使用烏鴉進行這種測試的更好方法。當測試運行時,我將在Specs項目中啓動一個烏鴉服務... – ullmark 2011-03-03 08:56:00