Javascript 单元测试Ajax调用
我需要一些关于单元测试的建议。我用的是摩卡咖啡和西农咖啡 我有一个处理所有ajax请求的httpService模块(由我编写)。正在测试的文件需要httpService模块 我正在对一个函数进行单元测试,该函数调用同一文件中的私有函数,而私有函数又调用httpService.get() 单元测试的最佳方法是什么 我提出的选项包括: 1) 我可以使用sinon FakeXMLHttpRequest来伪造Ajax响应。但是,因为ajax请求是从httpService模块发出的,所以我现在正在测试httpService模块的功能。这不是集成测试吗 2) 我可以要求将httpService模块放入我的单元测试文件中,并存根httpService.get()函数。在我的单元测试中要求一个模块是可以接受的,即使它只是存根函数 其他内容不会从正在测试的文件中公开 还有其他选择吗Javascript 单元测试Ajax调用,javascript,unit-testing,mocha.js,sinon,Javascript,Unit Testing,Mocha.js,Sinon,我需要一些关于单元测试的建议。我用的是摩卡咖啡和西农咖啡 我有一个处理所有ajax请求的httpService模块(由我编写)。正在测试的文件需要httpService模块 我正在对一个函数进行单元测试,该函数调用同一文件中的私有函数,而私有函数又调用httpService.get() 单元测试的最佳方法是什么 我提出的选项包括: 1) 我可以使用sinon FakeXMLHttpRequest来伪造Ajax响应。但是,因为ajax请求是从httpService模块发出的,所以我现在正在测试ht
提前谢谢 您的选项1走得太远了,这是正确的。单元测试应限于测试当前函数 选项2正在到达那里。。。我需要httpService模块,但随后创建一个sinon spy来监视httpService.get函数 sinon.spy(对象,“方法”) 这样,您就可以简单地检查您的方法是否导致了对http服务的调用 你应该看看这里关于间谍的文件
谢谢您的回复,我真的很感激!。再来一杯。如果httpService.get返回测试文件中使用的一些数据,在本例中,它正在设置视图模型对象,那么我是否应该在调用测试函数后测试视图模型对象是否已更新。在这种情况下,我想我需要使用存根?如果我使用的是BDD,我是否需要测试httpService.get()函数是否已被调用(使用间谍),或者我只是对视图模型对象已被更新的事实感兴趣。很抱歉问了这么多问题!是的,西农。在那种情况下,存根看起来是个不错的选择。您基本上可以告诉存根使用.returns前缀返回什么。