javascript - 涉及 API 的单元测试

标签 javascript unit-testing rest

我是单元测试的新手,所以请对我宽容一些。我有一些查询 RESTful API 的模块。我发现在每个测试套件中,我都使用几行代码来启动一个简单的 ExpressJS Web 服务器,以模拟一些我可以从测试中调用的路由。在每个测试套件中都可以这样写,这已经过时了。必须有更好的方法来做到这一点。有什么建议吗?

顺便说一句,我的代码都是在 NodeJS 和浏览器中运行的 javascript。

更新:我不确定我在原来的评论中是否很好地解释了自己,所以这里有一些代码示例来帮助进一步解释。

假设我的测试套件正在测试“Person”模块:

describe("Person", function () {

    it("saves through REST API", function (done) {

        var person = new Person();

        //person gets posted to "/api/person/"
        person.save(function () {
            expect(person._id).to.be("id");
            done();
        });
    });
});

通常我会使用以下路线创建一个小型 express 服务器:

app.post("/api/person/*", function (req, res) { res.send(200, {data:0123}) });

但是必须为我编写的每个测试套件执行此操作,这很糟糕。如果这可以使用 stub 或 spy 来完成,我很乐意看到一个示例。或者,如果我做错了,请让我知道我可以做些什么不同的事情。谢谢!!!

最佳答案

您可以使用Sinon对于 stub /监视您的 ajax 调用,请检查它们被执行了多少次、传递了哪些参数等。请查看 Sinon 网站上的示例以获取更多信息。

关于javascript - 涉及 API 的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070999/

相关文章:

javascript - 在 Javascript 中为不同的按钮编写多个事件监听器

javascript - 使用 MobX 存储循环引用进行设置测试

c# - 在模拟的 EF6 数据库中通过外键加载相关数据

wordpress - 在 Wordpress.com 上使用 REST API 发帖 [错误 401,不允许]

python - pyrequests 将 dict 值编码为 JSON 中的列表

javascript - 如何只让当前子菜单获得事件类而不是所有子菜单?

javascript - 减慢 jQuery JSON 解析速度?

javascript - 再一次约: Error: Attempting to use a disconnected port object,怎么办?

iphone - 有任何用于 UI 单元测试 iPhone 应用程序的工具(不是 SenTestCase)

java - 使用 JDBC 与 MySQL、JAVA REST 和 Python REST 进行序列化