如何将dojo/doh测试迁移到intern



我有很多dojo/doh单元测试,我想将它们迁移到intern/chai。有没有迁移指南,甚至转换器可以帮助我?

感谢

没有用于自动将测试从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中,设置和拆卸功能(正确地)是每个套件,而不是每个测试。

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

并没有清晰地映射到Intern模型,因此根据意图,它成为了为数不多的不同事物之一。

作为子套件:

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

作为测试:

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

可能还有其他选择。

杂项:

doh.runGroup→使用suites参数运行特定套件
doh.togglePaused→使用this.async()控制测试中的流量
doh.pause→使用this.async()控制测试中的流量
doh.run→使用this.async()控制来自测试的流量

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

最新更新