2014-09-03 25 views
1

我有一個角度的應用程序正在進行一些茉莉花測試。我最近添加了一個新的方法來在我的一個服務中對彈性搜索進行查詢,它看起來像這樣。爲茉莉花集成測試做出真正的異步請求

test: 
    function(){ 
     return "Working"; 
    }, 

executeSearch: 
    function(field, value, size, page_number){ 
     return service.executeRegExSearch(field, value, size, page_number); 
    }, 

//new method 
executeRegExSearch: 
    function(field, value, size, page_number){ 
     //main search body, I know it works because 
     //I am getting expected results in the browser 
    } 

然後在我的茉莉花測試中,我有這樣的事情。

//initialization stuff 
var $httpBackend; 
var searchAPI; 

beforeEach(inject(function($injector){ 
    jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000; 
    $httpBackend = $injector.get('$httpBackend'); 
    searchAPI = $injector.get('searchAPI'); 
})); 

it("is loaded properly", function(){ 
    expect(searchAPI.test() == "Working").toBe(true); //passes 
}); 

it("can make a request", function(){ 
    var field = "col_name"; 
    var value = "bb.*"; //this is matching in my browser/application 
    var size = 10; 
    var page_number = 1; 

    var res; 

    searchAPI.executeSearch(field, value, size, page_number).then(function(res){ 
     res = res; 
     alert(JSON.stringify(res)); 
     done(); 
    }); 
    $httpBackend.flush(); 

}); 

但是當我跑,我得到的錯誤

Unexpected request: GET http://myserver/index-1/_search?source={"query":{"regexp":{"col_name":{"value":"bb.*"}}}}"&size=10&from=0 No more request expected in http://localhost:8081/js/angularjs/angular-mocks.js (line 1180) 

我不知道如何使用的嘲笑,還是我甚至知道我在做它。我所要做的就是能夠運行一套測試,實際調用我的後端,以確認事情正在被正確集成......你知道......集成測試。

任何人有任何建議?

回答

0

如果你想爲角度應用做端到端的e2e測試,你肯定必須使用量角器(由角度團隊創建),你可以使用茉莉花創建你的測試並運行它們對你的應用程序,如果你只是使用單元測試我認爲最好的方法是模擬httpBackend。

https://github.com/angular/protractor

https://docs.angularjs.org/guide/e2e-testing

+0

好的,我想同時做兩個,所以我會檢查出這兩個鏈接。謝謝! – Zack 2014-09-03 16:35:21

+0

除了使用量角器進行e2e teting之外,您還可以使用ngMidway測試器調用真實的後端形式Jasmine測試。我建議閱讀http://stackoverflow.com/questions/20864764/e2e-mock-httpbackend-doesnt-actually-passthrough-for-me,尤其是重擊http://plnkr.co/edit/552UuwY6mQGyrMnJMqPx?p=預覽 – tapatron 2014-09-03 20:27:17

1

我不想做硒的東西的測試,所以測試我的應用程序與真正的後臺調用我用modified version of angular-mocks

它的工作原理就像爲單位 - 在茉莉花測試。

我使用它與茉莉2.0,所以測試看起來如下:

it(' myTest', function (done) { 
    _myService.apiCall() 
     .then(function() { 
      expect(true).toBeTruthy(); 
      done() 
     }); 
}); 

注:由於異步調用的是需要done

+0

感謝您的回覆。 – Zack 2014-09-22 15:41:41