[英]Javascript function refactoring questions
I'm relatively new to Javascript, and was just writing some simple qunit tests. 我是Java的新手,只是编写了一些简单的qunit测试。 There is a lot of DRY opportunity here, so I was wondering how a JS pro would refactor this: 这里有很多DRY机会,所以我想知道JS pro如何重构它:
test("Add time to date (in seconds)", function () {
var d = new Date(),
dPlus = new Date(d.getTime())
dPlus.addSeconds(1)
ok(d.getTime() + 1000 === dPlus.getTime(), "Passed!")
})
test("Subtract from date (in seconds)", function () {
var d = new Date(),
dMinus = new Date(d.getTime())
dMinus.addSeconds(-1)
ok(d.getTime() - 1000 === dMinus.getTime(), "Passed!")
})
test("Add 0 to date (in seconds)", function () {
var d = new Date(),
dMinus = new Date(d.getTime())
dMinus.addSeconds(0)
ok(d.getTime() === dMinus.getTime(), "Passed!")
})
test("Add time to date (in minutes)", function () {
var d = new Date(),
dPlus = new Date(d.getTime())
dPlus.addMinutes(1)
ok(d.getTime() + (60 * 1000) === dPlus.getTime(), "Passed!")
})
test("Subtract from date (in minutes)", function () {
var d = new Date(),
dMinus = new Date(d.getTime())
dMinus.addMinutes(-1)
ok(d.getTime() - (60 * 1000) === dMinus.getTime(), "Passed!")
})
test("Add 0 to date (in minutes)", function () {
var d = new Date(),
dMinus = new Date(d.getTime())
dMinus.addMinutes(0)
ok(d.getTime() === dMinus.getTime(), "Passed!")
})
I suspect I could write a function that takes one parameters for the qty of time units, the function (addSeconds, addMinutes), and either the expected offset or a function to calculate it, just not sure what the idiomatic way to write it would be. 我怀疑我可以编写一个函数,该函数以一个数量的时间单位作为参数,该函数(addSeconds,addMinutes),以及期望的偏移量或用于计算它的函数,只是不确定该写的惯用方式是什么。
function testUnits(func, amount, offset) {
var d = new Date(),
dMinus = new Date(d.getTime());
dMinus[func](amount);
ok(d.getTime() + offset === dMinus.getTime(), "Passed!");
}
test("Subtract from date (in minutes)", function () {
testUnits('addMinutes', -1, -60000);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.