Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模拟角度模型的$http.put结果-单元测试_Javascript_Angularjs_Unit Testing_Jasmine_Angular Mock - Fatal编程技术网

Javascript 模拟角度模型的$http.put结果-单元测试

Javascript 模拟角度模型的$http.put结果-单元测试,javascript,angularjs,unit-testing,jasmine,angular-mock,Javascript,Angularjs,Unit Testing,Jasmine,Angular Mock,我有这个测试: 测试: 模型角度: function iniciarEntrevista(id) { var _this = this; return $http .put(this.urlEntrevistaPorId, { estudoId: idEstudo, entrevistaId: id }) .success(function (result) {

我有这个测试:

测试:

模型角度:

function iniciarEntrevista(id) {
            var _this = this;
            return $http
                .put(this.urlEntrevistaPorId, { estudoId: idEstudo, entrevistaId: id })
                .success(function (result) {
                    if (result.Iniciada) {
                        _this.setEntrevista(result.Entrevista, result.PaginaAtual);
                        return true;
                    }
                    else {
                        return false;
                    }                 
                });
        }
调用Questionario.iniciarEntrevista并等待调用SetEntervista。但由于$http.put的返回,因此未调用此方法

我需要结果。伊尼西亚达是真实的


我如何模仿它?

使用它的一种方法是使用

这里还有一些例子,基本上是在测试控制器中注入$httpBackend,并将其映射到请求。你在提供的链接中有一些例子,我认为这是直接从这里开始的


还有一个plunker链接。

使用它的一种方法是使用

这里还有一些例子,基本上是在测试控制器中注入$httpBackend,并将其映射到请求。你在提供的链接中有一些例子,我认为这是直接从这里开始的

还有一个plunker链接。

我找到了

只是在$httpBackend.expectPUT上添加了一行Iniciada:true

谢谢大家

我明白了

只是在$httpBackend.expectPUT上添加了一行Iniciada:true


谢谢大家

尝试将200代码添加到响应中。如下:.respond(200,{})我发现用
spyOn($http,'post')和.returnValue($q.when(myData))模拟$http对象更容易它看起来像是响应处理程序中的
if(result.Iniciad)
条件可能是问题所在。当收到响应时,您正在检查此属性,但您似乎没有在模拟响应数据中传递该属性。请尝试将200代码添加到响应中。如下:.respond(200,{})我发现用
spyOn($http,'post')和.returnValue($q.when(myData))模拟$http对象更容易它看起来像是响应处理程序中的
if(result.Iniciad)
条件可能是问题所在。当接收到响应时,您正在检查该属性,但您似乎没有在模拟响应数据中传递该属性。
function iniciarEntrevista(id) {
            var _this = this;
            return $http
                .put(this.urlEntrevistaPorId, { estudoId: idEstudo, entrevistaId: id })
                .success(function (result) {
                    if (result.Iniciada) {
                        _this.setEntrevista(result.Entrevista, result.PaginaAtual);
                        return true;
                    }
                    else {
                        return false;
                    }                 
                });
        }