sepiaを利用したテスト中で一時的に機能を無効化する

Node.js向けのwebmockの作成を楽にしてくれるライブラリにsepiaがあります。RubyVCRみたく一度テストで利用する通信内容を記録してモック化され、2回目以降の通信はそのモックを介して行われる様になるというものです。

github.com

sepiaを基本的に使う様にしているのですが、一部分でNockを利用したテストを含んでいた場合に、Nockで書かれたテスト内のみsepiaの動きを止めたいと考えたときにどうすれば良いのかと調べたのでメモとして残しておきます。

得てしてこういうときは世の中に3000人くらい同じことをやろうとする人がいて、3人くらいが実際に手を動かし内1人くらいがどこかに記録を残してくれているに違いないという思想を持っているのでsepiaのリポジトリのissueを眺めているとまさにという内容があったのでそれに倣いました。

github.com

上と同内容のファイルをプロジェクトに置いて、

var foo = require('../../../lib/plugin/foo.js'),
    sepia = require('../../util/sepia'),
    path = require('path');

describe('......, function(){
  it('should be ..... ', function(done){
    sepia.fixtureDir(path.join(process.cwd(), 'test', 'sepia-fixtures'));
    sepia.enable();

    var args = {
      token:'xxxxxx'
    };

    foo.output(args, "123", function(err, output){
      err.should.be.false;
      sepia.disable();
      done();
    });
  });
});

といった具合にしてみたのだが、これがスマートなやり方なのかいささか不安な点もある。