0

dojo/doh 単体テストがたくさんあるので、intern/chai に移行したいと考えています。私を助けることができる移行ガイドまたはおそらくコンバーターはありますか?

ありがとう

4

1 に答える 1

3

テストを DOH から Intern に自動的に移行するためのコンバーターはありませんが、これを作成することに興味がある場合は、新しい拡張チケットを開いてください。

移行ガイドもありませんが、ほぼすべてのケースでパスはかなり単純です。

アサーションの場合:

doh.t(value, message)assert.isTrue(value, message)
doh.f(value, message)assert.isFalse(value, message)
doh.e(ErrorType, context, fnName, args, message)assert.throws(lang.hitch(context, fnName, arg1, argN), ErrorType, regExp, message)
doh.is(expected, actual, message)assert.deepEqual(actual, expected, message)
doh.isNot(expected, actual, message)assert.notDeepEqual(actual, expected, message)

(Chai にはDOH よりも多くのアサーション タイプがあります)

非同期テストの場合:

new doh.Deferredthis.async(timeout)(テスト関数内から)
doh.Deferred#getTestErrback(callback)InternDeferred#rejectOnError(callback)
doh.Deferred#getTestCallback(callback)InternDeferred#callback(callback)

テストを登録する場合:

doh.registerTestType→ 新しいテスト インターフェイス ( tddbddなど) を作成し、スイートからアクセスします。
doh.register→ tdd、bdd、またはオブジェクト インターフェイスを使用して、スイートとテストを登録します。理論的には、をエミュレートする新しいテスト インターフェイスを作成できますdoh.register

doh.register私がこれまでに使用した中で本当に最悪の API です。ほぼすべての単一の引数は複数の異なるものを受け入れることができるため、これらのテストのほとんどの移行パスを明確に説明することは非常に困難です. のような一部のシグネチャは、{ runTest, setUp, tearDown }直接の類推を持っていません。なぜなら、Intern では、セットアップと破棄の関数は (正しく) テストごとではなくスイートごとであるためです。

これらの例はすべて、それがモジュールregisterSuiteの識別子であると想定していintern!objectます。

doh.register(groupId, [
  function testA() {},
  function testB() {}
], setupFn, teardownFn);

になる

registerSuite({
  name: groupId,
  setup: setupFn,
  teardown: teardownFn,
  testA: function () {},
  testB: function () {}
});

doh.register(groupId, function testFn() {});

になる

registerSuite({ name: groupId, testFn: function () {} });

doh.register(groupId, {
  setUp: setupFn,
  tearDown: teardownFn,
  runTest: testFn,
  name: 'myTest'
});

Intern モデルにきれいにマッピングされないため、意図に応じていくつかの異なるものの 1 つになります。

サブスイートとして:

registerSuite({
  name: groupId,
  myTest: {
    setup: setupFn,
    teardown: teardownFn,
    '': testFn
  }
});

テストとして:

registerSuite({
  name: groupId,
  myTest: function () {
    setupFn();
    try {
      testFn();
    }
    finally {
      teardownFn();
    }
  }
});

他のオプションもあるかもしれません。

その他:

doh.runGroupsuites引数を使用して特定のスイートを実行する
doh.togglePausedthis.async()テスト内からフローを制御するために使用する
doh.pause→テスト内からフローを制御するために使用する →this.async()テスト内からフローを制御するために使用する
doh.runthis.async()

明らかに、Intern には DOH からの多くの追加機能と、他のほとんどのテスト環境に一致する異なる概念モデルがあるため、慣れればより強力で使いやすくなるはずです。

于 2013-11-28T06:44:08.040 に答える