Mi scuso se questa è una domanda semplice, sono relativamente nuovo a Nodo e Sinone. Sto faticando a cercare di capire come affermare che una funzione asincrona annidata è stata chiamata in Nodejs.Sinone - come disattivare la funzione annidata?
Sto usando mocha, chai, sinon e richiesta (https://github.com/request/request) ma penso che manchi qualcosa di base sulla parte di stub.
Esempio all'interno my_app.js -
var request = require('request');
function MyModule() {
};
MyModule.prototype.getTicker = function(callback) {
request('http://example.com/api/ticker', function(error, response) {
if (error) {
callback(error);
} else {
callback(null, response);
}
});
};
exports.mymodule = new MyModule();
All'interno del test. Sto provando a bloccare la chiamata per richiedere e fornire alcuni dati fittizi da restituire. Ma continuo a ricevere un errore "richiesta non è definito" sulla linea in cui I "m creare lo stub.
var myApp = require('../my_app.js')
,assert = require("assert")
,chai = require('chai')
,sinon = require('sinon')
,expect = chai.expect;
describe('mymodule object', function() {
var mymodule = myApp.mymodule;
before(function(done) {
sinon.stub(request).yields(null, JSON.stringify({
price: '100 USD'
}));
done();
});
it('getTicker function should call request on example ticker', function(done) {
mymodule.getTicker(function(error, result){
request.called.should.be.equal(true);
done();
});
});
});
so di poter assegnare sinon.stub (objname, "funcname") o sinon.stub ("funcname"), ma quelli solo impostano l'oggetto esterno, sto provando a stub la richiesta di funzione che si trova nella funzione getTicker
Qualche idea su come fare? Forse ho bisogno di usare anche una spia (ma come?) O c'è un approccio migliore per testare la funzione getTicker sopra?
Ok fantastico, non ho pensato di usare il metodo get su questo. Ora posso anche usare una spia per verificare che la richiamata sia stata invocata credo. –
Ah, sì, posso verificare che sia stata richiamata la richiamata. ma sto usando una sintassi leggermente diversa 'mymodule.getTicker (callback);' 'request.get.should.have.been.called;' e 'request.get.should.have.been.called;' Grazie mille ! –