Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
Angularjs 在指令内模拟服务的值';s单元测试_Angularjs_Unit Testing_Jasmine_Karma Runner - Fatal编程技术网

Angularjs 在指令内模拟服务的值';s单元测试

Angularjs 在指令内模拟服务的值';s单元测试,angularjs,unit-testing,jasmine,karma-runner,Angularjs,Unit Testing,Jasmine,Karma Runner,在指令的实例化中,我调用了一个返回一些数据的方法: data=myService.getData() 在后面的代码中,我正在做 something=data[id] 在业力中,我有一个错误,不能读取未定义的id,这意味着数据未定义 我试图模拟呼叫服务,如: spyOn(myService,'getData')。和.returnValue(mockData) 但问题依然存在如何在我的测试中模拟数据? # Injector beforeEach(inject(($injector) ->

在指令的实例化中,我调用了一个返回一些数据的方法:

data=myService.getData()

在后面的代码中,我正在做
something=data[id]

在业力中,我有一个错误,不能读取未定义的id,这意味着
数据
未定义

我试图模拟呼叫服务,如:

spyOn(myService,'getData')。和.returnValue(mockData)

但问题依然存在如何在我的测试中模拟
数据

 # Injector
  beforeEach(inject(($injector) ->

    $compile = $injector.get('$compile')
    $rootScope = $injector.get('$rootScope')
    $scope = $rootScope.$new()
    $httpBackend = $injector.get('$httpBackend')
    myService = $injector.get('myService')

    element = angular.element('<my-directive id="0"></my-directive>')
    template = $compile(element)($scope)
    $scope.$digest()

    spyOn(myService, 'getData').and.returnValue(someMockData)
  ))
喷油器 每次之前(注入($injector)-> $compile=$injector.get(“$compile”) $rootScope=$injector.get(“$rootScope”) $scope=$rootScope.$new() $httpBackend=$injector.get(“$httpBackend”) myService=$injector.get('myService')) 元素=角度。元素(“”) 模板=$compile(元素)($scope) $scope.$digest() spyOn(myService,'getData')。和.returnValue(someMockData) ))
因此,不要使用实际的服务,而是创建一个jasmine spy

var myService = jasmine.createSpyObj('myService', ['getData']);

beforeEach(inject(($injector, $provide) => {

     // injector.gets ... don't get 'myService'
     . . . 

     $provide.value('myService', myService);

}))

it('should return data from service', () => {

    myService.getData.andReturn(['your mocked data']);

    // rest of test

})

不傻,但你在哪里定义了一些MockData?@mikeswright49在文件的顶部。是明确定义的。当我像您一样插入
提供程序时,我有
未知提供程序:$providerProvider对不起。我的错误。它应该是
$provide
。我会更新原始答案。