单元测试 Ajax 次调用

Unit Testing Ajax calls

我需要一些关于单元测试的建议。我正在使用 mocha 和 sinon。

我有一个处理所有 ajax 请求的 httpService 模块(由我编写)。正在测试的文件需要 httpService 模块。

我正在对一个函数进行单元测试,该函数调用同一文件中的私有函数,该函数又调用 httpService.get()

对此进行单元测试的最佳方法是什么?

我想到的选项:

1) 我可以使用 sinon FakeXMLHttpRequest 伪造 Ajax 响应。但是,因为 ajax 请求是从 httpService 模块发出的,所以我现在正在测试 httpService 模块的功能。这不是集成测试吗?

2) 我可以将 httpService 模块要求到我的单元测试文件中并存根 httpService.get() 函数。在我的单元测试中需要一个模块是否可以接受,即使它只是存根函数?

被测试的文件没有暴露任何其他内容。

还有其他选择吗?

提前致谢!

你是对的,你的选项 1 走得太远了。您的单元测试应仅限于测试您当前的功能。

选项 2 即将实现...我需要 httpService 模块,然后创建一个 sinon 间谍来监视 httpService.get 函数。

sinon.spy(对象,"method")

这样您就可以简单地检查您的方法是否调用了 http 服务。

您应该在此处阅读有关间谍的文档...

Sinon spies