2014-08-29 76 views
0

功能假如我有内外部下列功能的JavaScript文件sampleFunction.js内:测试JavaScript代码使用摩卡

function mathOperation(a,b){ 
    var sum = a + b; 
    var diff = a - b; 
    var product = a * b; 
} 

而且我想在这个功能使用mochaJS从另一个单独的文件进行单元测试,比如test.js。在那个文件中,我想为不同的输入测试所提到的功能,并测试结果。例如,我想检查总和是否为30,如果我将(20,10)传递给函数,则差值为10。

所以在我的测试文件,代码会是这样: -

var expect = chai.expect; 
describe('Testing the function mathOperation()',function(){ 
    //test cases for checking sum, difference and product in mathOperation() 
    ... 
    ... 
}); 

我怎么去写测试用例来检查总和,差异等方面的价值?

我问这个问题的原因是要知道我们如何测试用JavaScript编写的更大的函数,它不返回任何内容,并知道我们是否可以测试和比较函数内各个变量的值。

+0

如果你不返回/暴露任何东西,你如何测试函数?你所能做的就是测试'mathOperation'运行并且不会抛出错误。 – James 2014-08-29 11:26:28

+0

这个函数看起来是孤立的,除了参数外,根本不影响外部世界,我觉得缺少那里的东西。 – Mritunjay 2014-08-29 11:26:34

回答

0

我们如何测试JavaScript编写不返回任何更大的功能...

除非该功能更新/改变东西外部则无法考证。唯一可以测试的是该功能已成功完成。

...并比较各种变量的值的功能

你不能里面,这是没有任何关系的单元测试和摩卡特别,这只是普通的老JavaScript规则。在函数中声明的变量只有scoped,它们不能在外部访问。

+0

如果我们测试这个函数是否改变了外部的东西,那么这将是一种功能测试的权利?一个人如何对一个函数进行单元测试呢? – booleanhunter 2014-08-29 11:36:57

+0

@ashwinator是的,但给出的例子就是你所能做的*,实际上这将是一个黑盒测试。我认为问题在于你的函数的设计,如果你想让它可测试,那么你需要返回结果或者以某种方式公开结果*,否则你怎么才能验证它是否正确工作?毫无疑问,在返回数据时(即使它纯粹是为了测试目的),没有必要在生产中实际做任何事情。 – James 2014-08-29 11:39:27

+0

的确,它确实有道理。 – booleanhunter 2014-08-29 11:43:25