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

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

 2010-09-14 13:44:54 来源:WEB开发网   
核心提示: 现在让我们编写另外一个测试,验证一个drw.SlogMachine实例什么时候、多久回到客户端一次,使用JsUnit和JSMock的JavaScript测试驱动开发(8),如果服务器端响应完成之前getBalance方法被调用,我们不希望余额被返回两次,仅仅由于参数的原因,让我们看看一个纯

现在让我们编写另外一个测试,验证一个drw.SlogMachine实例什么时候、多久回到客户端一次。如果服务器端响应完成之前getBalance方法被调用,我们不希望余额被返回两次。这会导致老虎机的余额两次返回到用户账户,并且花费额外的带宽。

function testGetBalanceWithMocksToTheNetworkOnce(){
   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();
   slotMachine.getBalance(); // no response from server yet
   slotMachine.getBalance(); // still no response


   mockControl.verify();
  }

还记得我们在这里的第一个crack吗?当时我们创建了一个自己的微型mocking框架?那看上去像是一个实用的解决方案,但是你想像一下测试这样的交互行为,会写多少代码。仅仅由于参数的原因,让我们看看一个纯粹的stub解决方案,有多少瑕疵。

function testGetBalanceFlawed(){
   var networkStub = {
    send : function() {
     if(this.called)
      throw new Error('This should not be called > 1 time');
     this.called = true;
    }
   };



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

   slotMachine.getBalance();
   slotMachine.getBalance(); // no response from server yet
   slotMachine.getBalance(); // still no response
  }

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

Tags:使用 JsUnit JSMock

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