2016-08-22 180 views
0

我得到所有的时间“遇到声明异常”。我正在为我的工厂写第一个单元测试。似乎嘲笑并不真正奏效。单元测试+茉莉花+角状态

做参考的路径是这样的:

///<reference path="~/App/js/jasmine/jasmine.js"/> 
///<reference path="~/App/js/lib/40_Angular/angular.js"/> 
///<reference path="~/App/js/jasmine/angular-mocks.js"/> 

///<reference path="~/App/app.js"/> 
///<reference path="~/App/services/userService.js"/> 

我的抽样检验是这样的:

describe("userService", function() { 

beforeEach(module("issApp")); 

describe("userService", function() { 

var userService; 

beforeEach(inject(function() { 
    userService = $injector.get('userService'); 
})); 

it('should be true', function() { 
    expect(true).toBeDefined(); 
}); 

it('should have a farbSchema', function() { 
    expect(userService.getParameter("ngFarbSchema")).toBeDefined(); 
}); 
}); 

我app.js声明如下:

iss.app = angular.module("issApp", ["ng", "ui.router" ...]); 

userService.js声明如下:

iss.app.factory("userService", function ($q, $http) { 
return { 
    getParameter: getParameter, 
    setParameter: setParameter, 
    ... 
}; 
function getParameter(parameterName) { 
    var deferred = $q.defer(); 

    $http({ 
     url: iss.urls.base + iss.urls.getuserparam, 
     method: "GET", 
     params: { parameterName: parameterName } 
    }) 
    .success(function (data) { 
     deferred.resolve(data); 
    }) 
    .error(function (error) { 
     console.log("Fehler beim Aufruf userService.getParameter(): " + JSON.stringify(error)); 
    }); 

    return deferred.promise; 
    } 
    ... 
}); 

这是我使用的工具的版本:

ReSharper的:8.2.1

角:1.5.8

的Visual Studio:2013

茉莉花:2.4.1

+0

我认为这将是更好的您发布工厂的代码... – happyZZR1400

+0

好吧,我增加了一些代码工厂。 –

回答

0
expect(userService.getParameter("ngFarbSchema")).toBeDefined(); 

我不认为这是很好的检查方法是否定义的方式。 更好的办法是检查方法,无需调用它:

expect(userService.getParameter).toBeDefined(); 

看看这个plnkr

+0

我知道这个检查是无用的(语义上)。我试着让我的第一次单元测试运行并通过Resharper/VS 2013进行评估。它必须是某种语法或设置错误。 –

+0

你低估了我的错误,我没有说它没用,只是你需要改变测试和检查属性,而不是调用它 – happyZZR1400

+0

好的。我改变了它,但我仍然有同样的错误。我很确定,测试失败在这一行:beforeEach(module(“issApp”)); –