在AngularJS中模拟$ resource对象的构造函数

un林

我正在使用AngularJS,我的测试在mocha + sinon + chai中

我要测试的代码如下所示:

addModal.result.then(function (clientFeature) {
                if (clientFeature) {
                    //create a new $resource ClientFeature object with result
                    var newClientFeature = new ClientFeature(clientFeature);
                    //push newly created clientfeature to list
                    $scope.clientFeatures.push(newClientFeature);

                    //make REST call to create new clientfeature
                    newClientFeature.$save({clientId: newClientFeature.client.id}, function (data, headers) {
                        console.log('created.');
                        console.log(data);
                    }, null);
                }
});

ClientFeature是$ resource对象:

“使用严格”;

angular.module('yrdyApp')
    .factory('ClientFeature', function ($resource, $location) {
        return $resource('https://' + $location.host() + ':port/clientfeatures/client/:clientId', {port: ':3333', clientId: '@clientId'}, {
            update: {method: 'PUT'}
        });
    });

我如何模拟这一行?

//create a new $resource ClientFeature object with result
var newClientFeature = new ClientFeature(clientFeature);

我现有的模拟:

        // set up mocks
    ClientFeatureMock = {
        query: sinon.spy(),
        update: sinon.stub()
    };

    // mock client feature object
    clientFeature = {
        client: {
            id: 100
        },
        $update: sinon.spy(),
        $save: sinon.spy()
    };

谢谢,肖恩

un林

我不确定这是否是推荐的处理方式,但我决定不对服务进行存根/模拟。相反,我注入了实际的服务,并监视单个方法+设置httpBackend来拦截http请求。

// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope, _$timeout_, $q, $httpBackend, _ClientFeature_) {

    // inject actual service
    ClientFeature = _ClientFeature_;

    // set up httpBackend behavior
    httpBackend = $httpBackend;        
    httpBackend.whenGET(/https:\/\/.+\/clientfeatures\/client\/./).respond(200, []);

    // set up mocks
    ClientFeatureMock = {
        query: sinon.spy(ClientFeature, 'query')
    };

和一个示例测试:

it('should start by retrieving a list of clientfeatures for a client', function () {
    // flush/make the http call
    httpBackend.flush();
    ClientFeatureMock.query.should.be.called;
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在python中模拟对象的构造函数

来自分类Dev

在python中模拟对象的构造函数

来自分类Dev

在构造函数中传递对象

来自分类Dev

如何绑定由AngularJS中的函数构造函数创建的对象

来自分类Dev

用不同的构造函数模拟对象

来自分类Dev

在对象的构造函数中传递对象

来自分类Dev

对象构造函数作为Javascript中的函数

来自分类Dev

对象,如函数,JavaScript中的构造函数

来自分类Dev

对象构造函数作为Javascript中的函数

来自分类Dev

在构造函数中的数组中的对象

来自分类Dev

在AngularJS事件单元测试中模拟事件对象

来自分类Dev

模拟对象,用于在其构造函数中的会话中设置项目

来自分类Dev

在Python构造函数中创建对象列表

来自分类Dev

在对象构造函数中引发异常

来自分类Dev

在构造函数中传递指向对象的指针

来自分类Dev

在Julia中的函数调用上构造对象

来自分类Dev

速记构造函数中的Typescript创建对象

来自分类Dev

对象数组中的显式构造函数

来自分类Dev

构造函数中的PHP全局PDO对象

来自分类Dev

数组作为对象构造函数中的参数

来自分类Dev

PHP在构造函数中创建对象

来自分类Dev

在构造函数参数中释放COM对象

来自分类Dev

在Python中调用cls对象的构造函数

来自分类Dev

在构造函数中传递对象的特定实例

来自分类Dev

如何访问在构造函数中创建的对象?

来自分类Dev

使用构造函数在 Javascript 中创建对象

来自分类Dev

在 Serializable 类的构造函数中定义对象

来自分类Dev

在构造函数的默认构造对象中未声明变量

来自分类Dev

需要在要测试的类的构造函数中模拟对象的创建