涉及API的单元测试

时间:2014-08-01 00:17:24

标签: javascript unit-testing rest

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

BTW我的代码是在NodeJS和浏览器中运行的所有javascript。

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

想象一下,我的测试套件正在测试“人员”模块:

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();
        });
    });
});

通常情况下,我会使用以下路线创建一个小型快递服务器:

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

但是我必须为我编写的每个测试套件执行此操作。如果这可以使用存根或间谍来完成,我很乐意看到如何使用它的例子。或者,如果我这样做是错的,请让我知道我能做些什么不同。感谢!!!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

个人而言,我使用了一个"间谍"由Jasmine提供给"间谍" http calls =>模拟。
因此,无需调用真实实现,也无需配置虚假路由 目标是确保在某些情况下进行预期的呼叫,并且意外的不是。

就像@BuDen evokes一样,Sinon对于存根来说也是完美的。