如何在AngularJS中创建模拟后端?

时间:2013-12-03 12:03:41

标签: angularjs testing mocking prototyping

如何使用AngularJS实现模拟后端以进行快速原型设计?

我需要能够伪造响应延迟,响应数据等。

我使用$ http服务。

5 个答案:

答案 0 :(得分:12)

您可以使用角度模拟来提供模拟后端。

plnkr上的工作演示。

基本上你包括角度后的角度模拟,并使用this gist中提供的代码 并且您将能够控制请求和响应,包括标头和假响应延迟等。

示例:

    //When backend receives a request to the views folder, pass it through
    $httpBackend.whenGET( RegExp( regEsc( Config.view_dir ) ) ).passThrough(); 

    //Message should return a list og messages
    $httpBackend.whenGET(APIBase + 'messages').respond(function(method, url, data, headers) {
        return [200, messages.data, {/*headers*/}];
    });

    $httpBackend.whenPOST(APIBase + 'messages').respond(function(method, url, data, headers) {
        var message = angular.fromJson(data);

        messages.data.push(message);
        //You should consider having the back-end being responsible for creating new id tho!
        messages.index[message.id] = message; 

        return [200, message, {/*headers*/}];
    });

    //Message/id should return a message
    $httpBackend.whenGET( RegExp(regEsc(APIBase + 'messages') + '\d+$') ).respond(function(method, url, data, headers) {
        var id = url.match(/\d+$/)[0];
        return [200, messages.index[id] || null, {/*headers*/}];
    });

```

您也可以设置应该传递给实际服务器的网址(查看passThrough()

答案 1 :(得分:1)

这些天我做的是通过apiary.io,它是免费的。您可以将API端点编写为蓝图,只需像请求REST服务器一样请求它们。您还可以编写要提供的任何响应。当REST服务器没有准备好但你的前端是。时很有用。

答案 2 :(得分:1)

您可以使用$httpBackend

以下是AngularJS网站的一个例子:

phones = [{name: 'phone1'}, {name: 'phone2'}];


// returns the current list of phones
$httpBackend.whenGET('/phones').respond(phones);

答案 3 :(得分:1)

只是添加这些答案:看看https://github.com/mdasberg/ng-apimock

https://www.npmjs.com/package/open-api-test-generator

ng-apimock是用于量角器和开发的场景切换器,open-api-test-generator可以为此工具生成模拟。一旦你了解了这些模块,就会非常方便。

答案 4 :(得分:0)

有关替代更自动化的后端模拟方法,请查看与swagger-api-mock一起使用的rest-json。 这些模块可以用来生成$ httpBackend响应:rest-json.js作为json数据的http类似访问,swagger-api-mock / lib / mock-data.js作为基于swagger的json模拟数据对象的生成器(或json架构)定义