2016-12-09 1 views
1

Ich versuche, Ende-zu-Ende-Tests mit Winkelmesser zu automatisieren und ich benutze Sinonjs, um einen FakeServer einzurichten, um auf bestimmte Ajax-Aufrufe (nicht alle) zu reagieren, die durch Tastenklicks ausgelöst werden.gefälschte Ajax Anrufe mit Sinonjs

Ich stecke fest und bin mir nicht sicher, wie ich darüber vorgehen soll und ein Anfänger in Automatisierung bin Ich bin mir nicht sicher, ob ich auf dem richtigen Weg bin.

var sinon = require('sinon'); 
describe("SinonFakeServerTest", function() { 
    var fakeServer; 
    beforeEach(function() { 
     fakeServer = sinon.fakeServer.create(); 
     fakeServer.autoRespond = true; 

     var data = {key1: 'xyz', key2: 'abc'}; 
     var response = [ 200, { "Content-Type": "application/json" }, data ]; 
     fakeServer.respondWith('/abc/xyz/*', response); 
    } 

    afterEach(function() { 
     fakeServer.restore(); 
    } 

    it("should fake a ajax request", function() { 
     // click on this button triggers ajax call.. 
     element(by.css('.take-button')).click(); 
     //should show fake data on ui 
    }); 
}); 

Dies ist der Produktionscode für Button-Klick-Steuerung und Modell

'.take-button click' : function(el, ev) { 
    model.getData(listParams, this.proxy('setUpData')); 
}, 

getList : function(params, success) { 
    $.ajax({ 
     url : '/abb/xyz/getAll.htm', 
     dataType : 'json', 
     type : "GET", 
     data : { 
      params : params 
     }, 
     success : success 
    }); 
} 
+0

Zeigen Sie Ihren Produktionscode – luboskrnac

+0

@luboskrnac - ich habe den Code, der auf Knopfklick ausgeführt wird..thanks !! – zeah

Antwort

0

ich mit Sinon des fakeServer Funktion nicht erfolgreich gefälschter Server tat, als Produktionscode JQuery wurde mit für AJAX-Aufrufe.

Ich würde vorschlagen, einfach Sinon Stubbing für $.ajax versuchen. Es gibt tatsächlich Beispiel auf sinonjs.org Website (schauen Sie in Abschnitt Testing Ajax):

after(function() { 
    // When the test either fails or passes, restore the original 
    // jQuery ajax function (Sinon.JS also provides tools to help 
    // test frameworks automate clean-up like this) 
    jQuery.ajax.restore(); 
}); 

it("makes a GET request for todo items", function() { 
    sinon.stub(jQuery, "ajax"); 
    getTodos(42, sinon.spy()); 

    assert(jQuery.ajax.calledWithMatch({ url: "/todo/42/items" })); 
}); 
+0

was ich versuche zu erreichen, ist das Senden von benutzerdefinierten HTTP-Antwort auf Knopf Klicks .. Stub erreicht das? – zeah

0

Ich löste das obige Problem in Winkelmesser ohne sinonjs. Ich benutzte Mockjax, um ausgewählte Ajax-Aufrufe zu hacken und injizierte dieses Skript über browser.executeScript()