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

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

 2010-09-14 13:44:54 来源:WEB开发网   
核心提示: 0 == false0 === false为什么会这样呢?相等操作符不像三等操作符那样严格,允许运行时对第一个布尔表达式执行类型转换,使用JsUnit和JSMock的JavaScript测试驱动开发(4),所以不难理解新手会认为下面的断言会通过:assertEquals(false, 0)

0 == false

0 === false

为什么会这样呢?相等操作符不像三等操作符那样严格,允许运行时对第一个布尔表达式执行类型转换。所以不难理解新手会认为下面的断言会通过:

assertEquals(false, 0);

实际上这个断言会失败,因为JsUnit框架提供的断言函数对所有的比较采用更严格的三等操作符,而不是相等操作符。通过避免相等操作符,JsUnit能够避免许多看似正确实则错误的测试。

Stubs vs. Mocks

让我们通过老虎机这一例子,看一看stubs和mock对象。由于这个单元测试关注单个对象,我们创建一个老虎机,并把它当作被测系统。现在让我们写一个简单的测试,生成老虎机。

function testRender() {
  var buttonStub = {};
  var balanceStub = {};
  var reelsStub = [{},{},{}];
  var randomNumbers = [2, 1, 3];
  var randomStub = function(){return randomNumbers.shift();};


  var slotMachine = new drw.SlotMachine(buttonStub, balanceStub, reelsStub, 
randomStub);
  slotMachine.render();


  assertEquals('Pay to play', buttonStub.value);
  assertTrue(buttonStub.disabled);
  assertEquals(0, balanceStub.innerHTML);
  assertEquals('images/2.jpg', reelsStub[0].src);
  assertEquals('images/1.jpg', reelsStub[1].src);
  assertEquals('images/3.jpg', reelsStub[2].src);
}

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

Tags:使用 JsUnit JSMock

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