Javascript Jasmine模仿函数中的构造函数
我在运行Jasmine测试时遇到一个错误:“ReferenceError:JSZip未定义”。这是我的控制器:Javascript Jasmine模仿函数中的构造函数,javascript,angularjs,unit-testing,angularjs-scope,jasmine,Javascript,Angularjs,Unit Testing,Angularjs Scope,Jasmine,我在运行Jasmine测试时遇到一个错误:“ReferenceError:JSZip未定义”。这是我的控制器: $scope.makeZip = function() { var zip = new JSZip(); zip.file('myPhoto.txt', 'Hello World); return 'foo' + zip.generate(); }; 和测试: it('should make a zip with correct name', function
$scope.makeZip = function() {
var zip = new JSZip();
zip.file('myPhoto.txt', 'Hello World);
return 'foo' + zip.generate();
};
和测试:
it('should make a zip with correct name', function() {
var zipFileName = scope.makeZip();
expect(zipFileName).toMatch('foo');
});
我的猜测是,我需要以某种方式模拟JSZip构造函数:我在测试开始时尝试插入以下内容:
spyOn(window, 'JSZip').andReturn(null);
但是我得到了“JSZip()方法不存在”。
我认为这是类似的问题,但我找不到一个正确的方法来解决这个问题
有什么想法吗?谢谢你的帮助 JSZip是在窗口上定义的。您不必将其传递给构造函数。在您的jasmine页面(您的枪套在那里),参考jszip.js。如果需要,可以创建一个服务 值(“JSZip”,JSZip)
然后将其传递到控制器中。不过,这只有在您想要模拟JSZip时才有用。解决了它!我实际上并不想测试JSZip,只是为了检查函数makeZip是否被正确调用
it('should make a zip with correct name', function() {
window.JSZip = function() {
this.file = function() {};
this.generate = function() {
return 'bar';
};
};
var zipFileName = scope.makeZip();
expect(zipFileName).toMatch('foo'); //makeZip should return string containing 'foo'
});
能否显示“makePhotos()”的函数?我只看到“makeZip”愚蠢的我,名字现在固定了哈哈,它发生了。那么,一切都按预期进行了吗?不,不幸的是问题仍然存在。。。