0

我有很多 dojo/doh 单元测试,我想迁移到实习生/柴。是否有迁移指南或什至可以帮助我的转换器?

谢谢

4

1 回答 1

3

没有用于自动将测试从 DOH 迁移到实习生的转换器,但如果这是您有兴趣创建的东西,请打开一个新的增强票,因为我们很想拥有一张。

也没有迁移指南,但几乎在所有情况下,路径都相当简单。

对于断言:

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→ 创建一个新的测试接口(如tdd,bdd等)并从您的套件中访问它
doh.register→ 使用 tdd、bdd 或对象接口来注册套件和测试。理论上,您可以编写一个模拟doh.register.

doh.register确实是我这辈子用过的最糟糕的 API。几乎每一个参数都可以接受多个不同的东西,因此很难清楚地解释大多数这些测试的迁移路径。一些签名,例如{ runTest, setUp, tearDown },没有直接的类比,因为在 Intern 中设置和拆卸功能(正确地)是每个套件,而不是每个测试。

所有这些示例都假定这registerSuiteintern!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'
});

没有清晰地映射到实习生模型,因此成为几个不同的事情之一,具体取决于意图。

作为子套件:

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

作为测试:

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

可能还有其他选择。

杂项:

doh.runGroup→ 使用suites参数来运行特定的套件
doh.togglePausedthis.async()用于控制测试中的流程
doh.pausethis.async()用于控制测试中的流程
doh.runthis.async()用于控制测试中的流程

显然,Intern 具有 DOH 的许多附加功能以及与大多数其他测试环境匹配的不同概念模型,因此一旦您掌握了它,它应该更强大且更易于使用。

于 2013-11-28T06:44:08.040 回答