WEB开发网
开发学院网页设计JavaScript 使用JsUnit和JSMock的JavaScript测试驱动开发 阅读

使用JsUnit和JSMock的JavaScript测试驱动开发

 2010-09-14 13:44:54 来源:WEB开发网   
核心提示: JsMock,JavaScript的Mock对象库仔细查看你会发现testGetBalanceGoesToNetwork创建了自己的微型mocking框架,使用JsUnit和JSMock的JavaScript测试驱动开发(7),现在让我们重构测试,使用一种通用的mocking框架,或者与预

JsMock,JavaScript的Mock对象库

仔细查看你会发现testGetBalanceGoesToNetwork创建了自己的微型mocking框架。现在让我们重构测试,使用一种通用的mocking框架。我们需要在测试页面添加一个独立的脚本标签,并像这样重写测试:

<script type='text/javascript' src='../jsmock/jsmock.js'></script>


  function testGetBalanceWithMocks(){
   var mockControl = new MockControl();
   var networkMock = mockControl.createMock({
    send : function() {}
   });


   networkMock.expects().send('/getBalance.jsp', TypeOf.isA(Function));


   var slotMachine = new drw.SlotMachine(null, null, null, null, networkMock);


   slotMachine.getBalance();


   mockControl.verify();

  }

现在使用更少的代码就能得到相同的反馈,我们甚至打下了更简单的基础,有利于进一步测试。如何做到这样的呢?代码的第一行使用JsMock提供的MockControl构造函数创建一个对象。代码于是创建了一个有send方法的mock对象。在一个有实际NetworkClient类的应用程序中,我们甚至不必把一个object literal应用到createMock方法中。JsMock可以通过原型推断出来。

var mock = mockControl.createMock(NetworkClient.prototype);

一旦network客户端的mock对象创建之后,我们编程期望带有特定参数的send方法被调用了一次。我们关心服务器资源名称是正确的,并且第二个参数是一个回调函数。mock对象被注入到被测系统的构造函数中,通过MockControl对象的验证方法,验证交互行为从而得出结论。如果因为任何原因,老虎机的实现没有调用network客户端的send方法,或者与预期的参数不符,验证方法会抛出一个异常,测试会失败。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:使用 JsUnit JSMock

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接