我有很多 dojo/doh 单元测试,我想迁移到实习生/柴。是否有迁移指南或什至可以帮助我的转换器?
谢谢
没有用于自动将测试从 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.Deferred
→ this.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 中设置和拆卸功能(正确地)是每个套件,而不是每个测试。
所有这些示例都假定这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'
});
没有清晰地映射到实习生模型,因此成为几个不同的事情之一,具体取决于意图。
作为子套件:
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 的许多附加功能以及与大多数其他测试环境匹配的不同概念模型,因此一旦您掌握了它,它应该更强大且更易于使用。