Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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 茉莉花服务行为_Javascript_Angularjs_Jasmine - Fatal编程技术网

Javascript 茉莉花服务行为

Javascript 茉莉花服务行为,javascript,angularjs,jasmine,Javascript,Angularjs,Jasmine,我有几个jasmine测试套件,其中一些使用我实现的服务。Jasmine中的服务行为是什么。我注意到,当我对我的服务运行一些测试时,我所做的会影响到其他单元测试。我们知道这不可能发生,因为单元测试必须是完全独立的。i、 e it('Given my service with list populated when cleanList then getList return empty list', function(){ myService.populateList(_myData_);

我有几个jasmine测试套件,其中一些使用我实现的服务。Jasmine中的服务行为是什么。我注意到,当我对我的服务运行一些测试时,我所做的会影响到其他单元测试。我们知道这不可能发生,因为单元测试必须是完全独立的。i、 e

it('Given my service with list populated when cleanList then getList return empty list', function(){
    myService.populateList(_myData_);
    expect(myService.getList().length).toBe(5);
    myService.cleanList();
    expect(myService.getList().length).toBe(0);
    expect(myService.getList()).toEqual([]);
});
如果我在另一个完全不同的JS脚本文件中的其他描述中的另一个测试之前执行该测试,那么我的其他测试将失败,因为我希望使用填充的列表,但该测试已经清除了它。这里的服务是否与我的应用程序中的服务相同?我可以为每个套件创建这些服务的独立实例吗

这就是我使用这些服务的方式

(function(){
  'use strict';
  var _data_ = require('../../../../json/dataMock.json');

  fdescribe('MyApp wizard:', function(){
  var controller, createController;
  var modalInstance = { close: function(){}, dismiss: function(){} };
  var myService;


  beforeEach(function(){
    angular.mock.module('myapp.ui.apps.wizard');
    angular.mock.module('myapp.ui.apps.wizard.service');
  });

  beforeEach(inject(function($injector, $controller, $rootScope, _$sce_, _myService_){
    myService = _myService_;

    createController = function() {
        return $controller('MaintenancesWizardController', {
            $rootScope: $rootScope,
            $uibModalInstance: modalInstance,
            data: _data_,
            $sce: _$sce_,
            myService: _myService_
        });
    }
  }));

  it('this test fails if the one before is executed', function(){
    controller = createController();
    expect(myService.getList().length).toBe(5);
  });

几个小时后我才发现发生了什么。我使用require导入模拟数据。当我使用几个导入时,我不记得数据存储在内存中。因此,我在服务中的内部arrayList指向与我的另一个描述套件相同的内存。我对相同的.json模拟数据文件使用了import。我将改变这个,并使用“fs”来阅读它。从现在起,我建议在这些情况下避免使用require。

您是否正在尝试测试myservice?你可以在你的服务中使用间谍,这样它就不会真正调用该服务并更改其值。@MukulJayaprakash我刚刚发现了发生的事情!读我的答案