Javascript函数重构问题

Javascript function refactoring questions

本文关键字:问题 重构 函数 Javascript      更新时间:2023-09-26

我对Javascript比较陌生,只是在编写一些简单的qunit测试。这里有很多DRY的机会,所以我想知道JS专业人士会如何重构它:

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!")
})

我想我可以写一个函数,它接受一个参数来表示时间单位的数量,即函数(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);
}