轻松模拟宁静服务的工具

时间:2012-12-26 05:21:02

标签: javascript ajax rest testing

是否有工具可以轻松模拟restful服务,以便我们可以轻松测试Ajax次来电?

例如,我需要模拟一个restful服务,以stringJSON格式返回XML

4 个答案:

答案 0 :(得分:2)

你可能会给jasmine-Ajax一个机会。 https://github.com/pivotal/jasmine-ajax

当然这意味着您需要使用Jasmine进行测试。 https://github.com/jasmine/jasmine/

Sinon也是一个非常强大的模拟库。 http://sinonjs.org/您可以选​​择您的测试框架。我和Mocha一起使用过它。 http://visionmedia.github.com/mocha/

答案 1 :(得分:2)

试试jmockit;我用它来模拟一个Web服务。但这是一个Java解决方案。如果您想在服务器端模拟REST API,那么这将适合。如果您没有REST应用程序,这将无济于事。

如果你想在客户端(在JS中)进行模拟;

您可以编写自己的模拟框架/接口。 因此,当您发送请求时,在其间放置一个层,可以返回测试响应,而不是实际调用REST URL。

客户端--->模拟界面---> REST API CALL

function mockingInterface(var url){
    //if original
    //make REST call

    //else; return mocked data
}

答案 2 :(得分:2)

FakeRest完全符合您的要求。

// initialize fake REST server and data
var restServer = new FakeRest.Server();
restServer.init({
    'authors': [
        { id: 0, first_name: 'Leo', last_name: 'Tolstoi' },
        { id: 1, first_name: 'Jane', last_name: 'Austen' }
    ],
    'books': [
        { id: 0, author_id: 0, title: 'Anna Karenina' },
        { id: 1, author_id: 0, title: 'War and Peace' },
        { id: 2, author_id: 1, title: 'Pride and Prejudice' },
        { id: 3, author_id: 1, title: 'Sense and Sensibility' }
    ]
});
// use sinon.js to monkey-patch XmlHttpRequest
var server = sinon.fakeServer.create();
server.respondWith(restServer.getHandler());

// Now query the fake REST server
var req = new XMLHttpRequest();
req.open("GET", "/authors", false);
req.send(null);
console.log(req.responseText);
// [
//    {"id":0,"first_name":"Leo","last_name":"Tolstoi"},
//    {"id":1,"first_name":"Jane","last_name":"Austen"}
// ]

答案 3 :(得分:0)

您也可以尝试http://apiary.io/

您可以在文本格式中定义请求响应,例如在JSON中。优点是MOCK API是公共的,因此团队的任何部分都可以使用它。