2016-10-02 59 views
0

我有以下代碼: (beforeEach)茉莉花規範並沒有期待

spyOn(HttpService, 'post').and.callFake(function (url, paging, targetSpinner) { 
     return $q.when(_fakeServerResponse); 
    }); 

測試用例:

it('should compare size', function() { 
    service.get({},'','').then(function (serviceResponse) { 
     expect(serviceResponse.x).toEqual(_fakeServerResponse.x); 

和get方法:

return httpService.post(apiUrls).then(postComplete) 

我的問題正如標題中提到的那樣:爲什麼茉莉花說沒有預期。

服務本身在使用不運行測試:

myService.get(data, param1, param2).then(getComplete); 

我也補充一點,運行規範情況下,getComplete不會被調用,這是問題的根源,因爲我看到它(但我不知道爲什麼它不會被調用)。

謝謝

回答

1

$ q是異步的。返回的承諾只能在下一個範圍摘要中解決。您的測試而應是這樣的:

it('should compare size', inject(function($rootScope) { 
    var actualX; 
    service.get({},'','').then(function(serviceResponse) { 
    actualX = serviceResponse.x; 
    }; 

    $rootScope.$apply(); // that will actually resolve the promise 

    expect(actualX).toEqual(_fakeServerResponse.x); 
})); 
+0

謝謝你,我改變了它,我得到的迴應回來,但是,該postComplete方法返回後,我得到的錯誤:錯誤:意外的請求:POST/API/V1 /用戶/索引 沒有更多的預期請求,這意味着測試中的then子句永遠不會進入。怎麼會這樣?所有的請求應該由假的應該取代它不應該? –

+0

在看不到您的代碼時很難解釋原因。 –