2013-09-29 67 views
0

我有一個應用程序,我正在構建,就像我在過去幾年中構建的大多數應用程序一樣,使用乾淨的分離:後端的REST API Angular骨幹,之前只是jQuery)的前端。開發和測試AngularJS應用程序(和一般應用程序)

第一次測試時,很容易對REST API進行存根操作;在開發時,我可以像靜態文件服務器(如angular-seed的./scripts/web-server)那樣執行文件並將其放入文件。但是在某個時候,我真的需要開發和測試真正的REST API。

人們如何針對這種獨立的應用程序構建反對並啓動?在過去,我有一個./dev節點腳本,它將設置各種測試/開發數據庫變量,然後require('../../server-dev-dir/app.js'),但它似乎有點沉重。有沒有更乾淨的方法來做到這一點?

同樣的測試問題:該應用程序確實需要針對真正的REST API進行測試,在某些時候,存根和嘲笑只能提供很大的幫助。

回答

1

在AngularJS中,您使用$http服務完成所有HTTP請求。測試$http不是您的工作。這是AngularJS團隊的職責。所有你關心的是:

貴後端或第三方(API)後端​​接收$http正在發送的要求配置你的AngularJS代碼

爲此,AngularJS提供了$httpBackend模擬。當angular-mocks.js在您的測試中加載時,$http將向其發送HTTP請求。您可以通過培訓$httpBackend瞭解如何回覆任何網址。

您還可以對接收到的請求$httpBackend發出斷言,並通過這些請求收到哪些數據。

+0

很高興再次見到你。我明白你的意思,我的問題是有時候嘲笑是不夠的。當您使用REST API構建Web應用程序(例如50種不同的路徑),並且POST中的一個影響另一個GET時,您幾乎可以在模擬中重建整個後端API!你不喜歡使用真正的服務器端應用程序在本地運行嗎?還是有一些簡單的方法來嘲笑它? – deitch

+0

@deitch,是的,我認爲你是對的。嘲笑你的後端可能涉及很多工作,但是由於響應在'$ httpBackend'中被硬編碼,所以它不像從頭開始重建整個後端那樣糟糕。不知道這是否可行,但你可以嘗試不包括'angular-mocks.js'。也許這會讓你的'$ http'發送真正的請求到你的服務器。但是,那麼你將不得不編寫異步測試,這在我看來並不糟糕。 –

+0

我不介意異步測試。我通常使用摩卡,但無論哪種方式,異步並不是那麼糟糕。但是,用戶界面對REST API進行了大量的練習 - 實際上,所有這些 - 我發現自己正在重新創建它,不妨發佈它。 – deitch