2016-08-22 284 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」)); –