2012-10-02 28 views
8

Uygulamamız için bir test yazıyorum ve angularjs-mocks.js dosyasını ekledim, bu yüzden onunla birlikte gelen güzel dsl işlevlerini kullanabiliyorum.Hiçbir şey alay etmeden angularjs alaylarını kullanma

Ama aslında $ http istekleriyle dalga geçmek istemiyorum çünkü bu uygulamayı bir müşterinin sürekli akı olan arka ucuna entegre ediyorum ve gerçek yanıtlara karşı test yapmak istiyorum.

Bu durumda gerçek http arka ucunu kullanmanın en iyi (en kolay) yolu nedir?

DÜZENLEME: Aşağıda belirttiğimiz gibi, muhtemelen kırık, çalışmayan

$httpBackend.whenPOST(/.*/).passThrough() 

Ama: Ben bu kullanmaktır potansiyel bir çözüm, buldum

? açısal içinde $ httpBackend geçersiz kılınır hattını (1365 dışarı yorumlarında: Ben soruna hızlı ve kirli çözüm anladım https://github.com/angular/angular.js/issues/1434

+0

her zaman XHR http isteği yapan, açısal alayların gerekmediği basit bir javascript oluşturarak bir $ a $ http oluşturmak için yaratabilirsiniz. Bu, JavaScript'te test etmenin güzel bir yanı, nesneleri bir araya getirebilir ve bunları dinamik yazımdan dolayı enjekte edebilirsiniz. –

+0

Doğru, ancak sorun, angularmocks $ http kullanan $ httpBackend'i geçersiz kılar. Şimdi $ httpBackend.whenGET (/.*/). PassThrough() ile uğraşmaya çalışıyorum, ama bu ya kırık görünüyor ya da doğru kullanmıyorum. – doubledriscoll

+0

Sanırım öneriyorum, sadece ihtiyacınız olan tüm yöntemlerle bir nesne oluşturmak için vanilya js kullanabilirsiniz. Açısal alay gerekli değildir. –

cevap

2

: Burada bir sorun açtım

Error: Unexpected request: POST /some/url/here No more request expected 

: bu hatayı alıyorum -mocks-1.0.2.js).

angular.module('ngMock', ['ng']).provider({ 
    $browser: angular.mock.$BrowserProvider, 
    $exceptionHandler: angular.mock.$ExceptionHandlerProvider, 
    $log: angular.mock.$LogProvider, 
    //$httpBackend: angular.mock.$HttpBackendProvider, 
    $rootElement: angular.mock.$RootElementProvider 
}).config(function($provide) { 
    $provide.decorator('$timeout', function($delegate, $browser) { 
    $delegate.flush = function() { 
     $browser.defer.flush(); 
    }; 
    return $delegate; 
    }); 
}); 

Bu muhtemelen başka bir şey kırar, ama bana test etmek için gerekenleri test etmenizi sağlayan ve üretim uygulamasını etkilemez, bu yüzden bana uyar. İnşallah gelecekte bunu yapmak için inşa edilmiş olacak.

+0

Bu oldukça çirkin. Daha iyi bir yol olmaması çok üzücü .. – stej

İlgili konular