테스트하려는 코드를 제공하지 않아서 어렵습니다. 그러나, 테스트 용이성, 나는 먼저
app.factory('fabric', function($window) {
return $window.fabric;
});
이 공장은 다음 모의 $ 창을 주입하고 패브릭 속성이 반환되는 것을 확인하여 테스트 할 수있는 글로벌 패브릭 객체를 반환하는 매우 작은 공장을 만들 것입니다.
describe('Factory: fabric', function() {
// load the service's module
beforeEach(module('plunker'));
var fabric;
var fakeFabric;
beforeEach(function() {
fakeFabric = {};
});
beforeEach(module(function($provide) {
$provide.value('$window', {
fabric: fakeFabric
});
}));
beforeEach(inject(function (_fabric_) {
fabric = _fabric_;
}));
it('should return $window.fabric', function() {
expect(fabric).toBe(fakeFabric);
});
});
다음은이 팩토리를 사용하는 서비스 예입니다.
app.service('MyFabricService', function(fabric) {
this.newCanvas = function(element) {
return new fabric.Canvas(element);
}
this.newRectangle = function(options) {
return new fabric.Rect(options);
}
this.addToCanvas = function(canvas, obj) {
return canvas.add(obj);
}
});
다음과 같은 방법으로 테스트 할 수 있습니다. 생성자로 호출 될 수동으로 만든 스파이와 모의 패브릭 객체를 생성하고 instanceof를 사용하고 toHaveBeenCalledWith에 의해 '새로운'개체를 테스트 할 수 있습니다 반환 기능은 구축 된 확인하는 방법 :
// Create mock fabric object
beforeEach(function() {
mockFabric = {
Canvas: jasmine.createSpy()
}
});
// Pass it to DI system
beforeEach(module(function($provide) {
$provide.value('fabric', mockFabric);
}));
// Fetch MyFabricService
beforeEach(inject(function (_MyFabricService_) {
MyFabricService = _MyFabricService_;
}));
it('should return an instance of fabric.Canvas', function() {
var newCanvas = MyFabricService.newCanvas();
expect(newCanvas instanceof mockFabric.Canvas).toBe(true);
});
it('should pass the element to the constructor', function() {
var element = {};
var newCanvas = MyFabricService.newCanvas(element);
expect(mockFabric.Canvas).toHaveBeenCalledWith(element);
});
addToCanvas 함수는 'add'스파이로 모의 캔버스 객체를 생성하여 테스트 할 수 있습니다.
var canvas;
// Create mock canvas object
beforeEach(function() {
canvas = {
add: jasmine.createSpy()
}
});
// Fetch MyFabricService
beforeEach(inject(function (_MyFabricService_) {
MyFabricService = _MyFabricService_;
}));
it('should call canvas.add(obj)', function() {
var obj = {};
MyFabricService.addToCanvas(canvas, obj);
expect(canvas.add).toHaveBeenCalledWith(obj);
});
이
는 모든이 Plunker 그는 아마, 응용 프로그램 별 기능을하지 시각적으로 테스트를 작성하고자하는
http://plnkr.co/edit/CTlTmtTLYPwemZassYF0?p=preview
블로그 게시물이어야합니다! 제가 빠뜨린 핵심은 $ window를 사용한 첫 번째 예제입니다. 그 생각을 결코하지 않았을 것입니다. –