2016-03-21 8 views
1

Ich habe eine Methode, die ich in Jasmine testen, und ein Teil der Funktionalität besteht darin, dass es ein JSON-Objekt analysiert, das ich ihm füttere. Wenn ich das "Daten" -Objekt in der Browser-Konsole protokolliere, sieht es so aus, als ob der JSON gerade geparst wurde, aber wenn ich den Test ausführe, bekomme ich SyntaxError: Unerwartetes Token u.Jasmine Test denkt, dass Daten nicht korrekt analysiert werden

Dies ist der Test (ich zurückkehren und eine beliebige Zahl erwartet, während ich zu beheben):

describe('The Save Show Form', function() { 

    beforeEach(function() { 

    saveShow = { 
     saveShowToDashboard: function(info, csrf) { 
     const showInfo = info; 
     const parsedShowInfo = JSON.parse(showInfo); 
     const _csrf = csrf; 
     const data = { 
      tourInfo: parsedShowInfo, 
      token: _csrf 
     }; 
     console.log(data); 
     return 2; 
     } 
    }; 

    spyOn(saveShow, 'saveShowToDashboard').and.callThrough(); 

    saveShow.saveShowToDashboard(testShowInfo, test_csrf); 

    }); 

    it('Should return a value of 2 for this test.', function() { 
    expect(saveShow.saveShowToDashboard()).toEqual(2); 
    }); 
}); 

... und dies ist die Dummy-Daten, die ich ihm vorbei bin:

const testShowInfo = '{"id": "11655593", "artist": "Odesza", "date": "Thursday, March 24, 2016 at 10:00PM", "venue": "Pacific Coliseum", "location": "Vancouver, Canada", "tickets": "available"}'; 

const test_csrf = 'KGSa3p5f-eJDLDjksk6FQmRqx2aouBU9zY-w'; 

Ich freue mich über jeden Hinweis.

+0

dieser Code Sie Teil-Funktionalität auf Github nicht enough.can hochladen? –

+0

Wirklich seltsam. Der direkte Aufruf von 'JSON.parse (testShowInfo)' funktioniert einwandfrei. Haben Sie versucht, ein Protokoll zu 'saveShowToDashboard()' hinzuzufügen, um zu überprüfen, ob 'info' nicht irgendwie beschädigt wurde? –

+0

@Haroldo_OK Ja und alles ist in Ordnung. Die Funktion in diesem Test ist eine Replik von einer, die ich in einer Anwendung verwende. Die Funktionalität funktioniert perfekt in der App. –

Antwort

0

Es stellt sich heraus, dass das Problem hier war, dass ich keine Argumente an den Funktionsaufruf innerhalb der Assertion übergeben habe. Ich nahm fälschlicherweise an, dass ich das nur innerhalb der beforeEach-Funktion tun musste.

Ich erhielt SyntaxError: Unerwartetes Token u, da JSON.parse() einen Wert von undefined übergeben wurde.

Die Behauptung sollte wie folgt lauten:

it('Should return a value of 2 for this test.', function() { 
    expect(saveShow.saveShowToDashboard(testShowInfo, test_csrf)).toEqual(2); 
    }); 
0

Wenn saveShow ist unser Controller dann erwarte ich Sie es richtig injiziert, wie Sie verwenden, es ist saveShowToDashboard Methode.

Anstatt nun wie diese const testShowInfo definieren und const test_csrf

sollten Sie es wie diese in Ihrem Controller

$scope.testShowInfo = '..'; 
$scope.test_csrf ='..'; 

Wie definieren sie mit const or var machen es sichtbar nur withing Controller definieren und kann nicht sein injizierbar in Jasmin-Schrift.

JS:

var controller,saveShow; 
beforeEach(inject(function(_$controller_,$rootScope){ 
    controller= controller_; 
    var scope = $rootScope.$new();; 
    saveShow = controller("saveShow",{$scope : scope}); 
})); 





describe('The Save Show Form', function() { 

      beforeEach(function() { 

        it("json should be defined", function() { 

         const showInfo = save.Showinfo; 
         const test_csrf = save.test_csrf; 

         const parsedShowInfo = JSON.parse(saveShow.showInfo); 

         saveShow.saveShowToDashboard(testShowInfo, test_csrf); 
        }) 
       }; 
      }); 
Verwandte Themen