2017-02-10 5 views
0

Ich bin neu im Knoten und verwende das node.js-Modul request, um eine HTTP-Anforderung an Google auszulösen.Knotenanforderungsmodul erhält während des Tests keine Antwort

Ich benutze dann die Test-Bibliothek Chai, um zu testen, ob die HTTP-Anfrage erfolgreich war. Der Test scheitert und ich kann nicht für das Leben von mir verstehen warum.

Der Code ist unten:

//validator.js 
var request = require('request') 

export function validateWeb(website) { 
    request('http://www.google.com', function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      console.log("Inside the successful callback!") //not being printed 
      return response.statusCode 
     } 
    }) 
} 

Der Test ist unten:

//validator_spec.js 
import {validateWeb} from '../src/validator' 

describe ('Validator',() => { 
    describe ('correctly validates',() => { 
     it('existing site',() => { 
      const site = "http://www.google.com" 
      var result = validateWeb(site) 
      expect(result).to.equal(200) 
     }) 
    }) 
}) 

Was bin ich? Der Test selbst läuft und läuft, wenn ich npm test ausführen (aber die Assertion ist fehlgeschlagen).

Antwort

0

Ihr Validator ist asynchron, so dass Sie einen Rückruf zur Verfügung zu stellen und verwenden müssen (oder ein Versprechen):

//validator.js 
var request = require('request') 

export function validateWeb(website, callback) { 
    request(website, (error, response, body) => { 
     if (error) return callback(error) 
     callback(null, response.statusCode) 
    }) 
} 

Dann in Ihrem Test:

//validator_spec.js 
import {validateWeb} from '../src/validator' 

describe ('Validator',() => { 
    describe ('correctly validates',() => { 
     it('existing site', (done) => { 
      const site = "http://www.google.com" 
      validateWeb(site, (err, result) => { 
       if (err) return done(err) 
       expect(result).to.equal(200) 
      }) 
     }) 
    }) 
}) 
+0

Die Behauptung wird immer noch scheitern. Ein einfaches "GET" zu http://www.google.com wird eine Antwort mit HTTP-Status: 302 erhalten. –

+0

@NehalJWani Die Bibliothek 'request' folgt standardmäßig Weiterleitungen. – idbehold

+0

Oh. Aha. Wusste das nicht. –

Verwandte Themen