在我AngularJS(1.4.4)應用程序,我廠有:
(function() {
"use strict";
angular
.module("app")
.factory("DeviceTypeService", DeviceTypeService);
function DeviceTypeService($window) {
function isTablet() {
var width = $window.innerWidth;
return width > 639;
}
return {
isTablet: isTablet
};
}
})();
我需要與茉莉它進行單元測試,在運行噶。我嘗試了不同的解決方案,但是我的測試每次都失敗。
我的一個解決方案:
'use strict';
describe('DeviceType Service', function(){
var mock_window,
sut;
beforeEach(function(){
module('app');
mock_window = {innerWidth: 1000};
module(function($provide){
$provide.value('$window', mock_window);
});
});
beforeEach(inject(function(_DeviceTypeService_){
sut = _DeviceTypeService_;
}));
it('isTablet() method shoul return "true" if $window.innerWidth > 639 px', function(){
expect(sut.isTablet()).toBeTruthy();
});
});
這個測試返回FAILED Expected false to be truthy
。我幾乎試圖爲$window.innerWidth
創建SPY,但它不起作用。
我使用: PhantomeJS(v 1.9.18)。 茉莉花(v 2.3.4)。 Karma(v 0.13.10)
請給我看看我的錯誤或給一些工作代碼一些參考。
如何爲'$ window.innerWidth'創建一個間諜。它是一個對象而不是函數。茉莉花間諜只能在功能上工作。 –