「ステップ2」に入るように@ra.do_postをスタブするにはどうすればよいですか
- 今、ステップ 1 の後に Async.Waterfall 内で仕様を実行すると、ステップ 5 に進みます
- 私が仕様にあると思うのは、ステップ2に入るためにコールバックを適切に返していないことです
最後までスクロールして、私が何をしているかを確認してください。事前にたくさんありがとう
RA = require('./request_adapter')
class QueryHandler
constructor: (@adapter) ->
@ra = new RA()
create_test: (id, data, cb) ->
self = this
_url = url + adapter_apis.CREATE
bll_url = "http://localhost:" + 11 + "/" + bll_apis.PKG_SWITCH
Async.waterfall [
(done) ->
console.info("Step 1 ==================")
@ra.do_post some_url, data, done
, (resp, done) ->
console.info("Step 2 ==================")
console.info(resp)
if resp? and resp.status isnt "SUCCESS"
console.info("Step 3a ==================")
cb({error: true, message: "error."})
else
console.info("Step 3b ==================")
fn = () -> self.ra.do_post _url, data , done
helper.delay 500, fn
, (resp, done) ->
console.info("Step 4 ==================")
cb(null,resp)
], (error, resp) ->
console.info("Step 5 ==================")
if error
cb({error: true, message: "errored out"})
これは私が私の仕様で試したことです
var qh = require(query_handler");
var qh_obj = new qh("FAKE");
var fn = function(ccb){
ccb(undefined, 10);
};
stub = sinon.stub(qh_obj.ra,'do_post').returns(fn);
qh_obj.create_test("fake_id", {switch_data: {a: 11}}, function(e,r) {
console.log(e);
(e.error).should.be.true
done();
});