JavaScript重构(三):JavaScript的测试

进行JavaScript重构时,我希望引入易于使用的测试框架来保证重构的顺利进行,未来能持续通过测试代码对JavaScript逻辑的正确性做保障。

JsUnit (http://sourceforge.net/projects/jsunit/http://www.jsunit.net/

JsUnit是一个独立的JavaScript单元测试框架,和JUnit差不多,没有上手难度,包括传统的setUp和tearDown,提供的assert方法也和JUnit类似,多了assertNaN和assertUndefined等等JavaScript特有的方法。测试页面必须在<head>里面引入jsUnitCore.js这个js文件。

测试套件的支持:提供了addTestPage和addTestSuite;

测试日志的支持:包括warn、info和debug三种日志级别,前端编码不似后台代码,正式代码中不宜使用过多log,再说log也只有FF下才支持,现在好了,在测试代码里尽情打吧。

 

千言万语不及一个例子:

<script language="javascript" src="jsUnitCore.js"></script>
<script language="javascript" src="play.js"></script> //模块JS

    function testWithMainProcess() {
        assertEquals("Web play url", "##
http://...##", webOnlinePlay());
    }

 
项目的代码里到处是Ajax调用,要做单元测试,看来打桩是不可避免了。Mock类的工具有许多,比如适合JQuery的QMock:

var mockJquery = new Mock();
   mockJquery
      .expects(1)
      .method('ajax')
      .withArguments({
         url: 'http://xxx,
         success: Function,
         dataType: "jsonp"
      })
      .callFunctionWith({ feed : { entry : "data response" }});

这个桩正是mock了一个假的ajax jason返回:[feed:[entry:"data response"]],看看,使用就和以前接触过的EasyMock差不多嘛。

对于JavaScript测试框架感兴趣的同学还可以了解一些其他的测试框架,例如JSpec。
  

单元测试代码建议就放在模块的包内:test.html,即便理想状况下,模块单独发布时,也是伴随着测试用例的可靠的前端代码。

从哪些JavaScript代码开始做?

1、函数式的代码。这样的代码保证独立性好,也不需要打什么桩,测试成本低,如果不明白函数式的代码的含义,请参见“函数式编程”。

2、复杂的逻辑。

是否尝试TDD?不建议在我们团队内部使用,前端TDD需要更高的技巧,对人的因素要求更高。如果有一天,后台Java代码的TDD做好了,那么换成JavaScript的代码,没有本质区别。

 

如果效果得当,为什么不能把JavaScript的UT集成到ICP-CI上作为持续集成的一部分呢?

  • 0
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
对于重构JavaScript高阶函数,有几个常见的方法和技巧可以使用。以下是一些常用的重构方法: 1. 使用箭头函数:箭头函数可以简化函数的定义,并且在某些情况下提供更简洁的语法。例如,可以将普通的匿名函数转换为箭头函数,从而减少代码的冗余。 2. 使用函数柯里化(Currying):函数柯里化是一种将多个参数的函数转换为接受一个参数的函数序列的技术。通过将函数柯里化,可以使函数更加灵活和可复用。 3. 使用函数组合:函数组合是将多个函数组合成一个新函数的技术。通过将多个函数组合起来,可以将复杂的操作拆分为简单的小步骤,提高代码的可读性和维护性。 4. 使用高阶函数作为参数或返回值:高阶函数是接受一个或多个函数作为参数或返回一个函数的函数。通过使用高阶函数,可以实现更加灵活和可扩展的代码。 5. 使用纯函数:纯函数是指在同样的输入下,始终返回相同的输出,并且没有任何副作用的函数。通过使用纯函数,可以减少代码的复杂性和不确定性。 6. 使用函数式编程范式:函数式编程范式强调使用纯函数、不可变数据和函数组合等技术来编写代码。通过使用函数式编程,可以提高代码的可读性、可维护性和可测试性。 以上是一些常见的重构方法,具体的重构方式取决于你的代码和需求。重构代码时,建议先编写测试用例,确保重构后的代码仍然正确运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值