2009-12-29 34 views
1

我有一个简单的验证方法如下惩戒一个JavaScript方法与ScrewUnit

function someMethod { 
    //some processing 
} 

欲单元测试此方法。什么是我可以嘲笑它的最简单的方法。通常,如果我有一个对象如下:

var someObject = function() { 
    reload : function() { 
    //reload logic here 
    } 
} 

我可以存根someObject,然后检查是否mock(someObject).should_receive("reload").exactly('once')

或类似的东西。但是从那时起我只有一种方法。我该如何嘲笑?

回答

3

对非面向对象的代码进行模拟很困难。 Misko Hevery在这里写到:http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability。困境是缺乏一个“钩子”,通过这个“钩子”可以将嘲笑的东西注入计算中。

你可以有实际的impl。的方法驻留在一个对象中。该方法将简单地委托给该对象。因此,为了测试这个方法,你只需要测试这个对象(假设你有正确的授权代码)。