Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 读取Jasmine Karma测试中的文件_Angularjs_Jasmine_Karma Runner - Fatal编程技术网

Angularjs 读取Jasmine Karma测试中的文件

Angularjs 读取Jasmine Karma测试中的文件,angularjs,jasmine,karma-runner,Angularjs,Jasmine,Karma Runner,我有一个对上传的文件起作用的服务。我在服务中有一个函数,它基本上将上传的(.xlxs)文件转换为工作簿。我想为这个特定的函数编写测试用例。(未上载到服务器,但仅上载到浏览器) 任何人都可以建议如何从单元测试场景内部访问测试文件(比如test_something.xlxs)。我希望将文件作为二进制字符串读取,并将对象传递给服务方法 我使用的单元测试框架是Karma+Jasmine 这是一件痛苦的事情,因为当你开始使用工具时,你已经进入了沙盒浏览器的领域,你无法真正轻松地访问外部文件。Karma的工

我有一个对上传的文件起作用的服务。我在服务中有一个函数,它基本上将上传的(.xlxs)文件转换为工作簿。我想为这个特定的函数编写测试用例。(未上载到服务器,但仅上载到浏览器) 任何人都可以建议如何从单元测试场景内部访问测试文件(比如test_something.xlxs)。我希望将文件作为二进制字符串读取,并将对象传递给服务方法


我使用的单元测试框架是Karma+Jasmine

这是一件痛苦的事情,因为当你开始使用工具时,你已经进入了沙盒浏览器的领域,你无法真正轻松地访问外部文件。Karma的工作原理是创建一个假的HTML页面包装器,通过PhantomJS、Jasmine等将其加载到浏览器中进行测试。当您的测试工具开始运行时,该浏览器已经在运行,在系统级别开始做一些奇怪的事情已经太晚了

解决这个问题的方法是使用Karma配置中的“文件”键。您可以在这里添加测试装置,Karma会将它们发送到页面中。当您进入二进制数据时,您需要做的是让构建任务将其转换为Javascript可以容忍的内容。通常,您将创建一个包含转义字符串(如Base64)的JSON文件,您可以将其解码回原始数据


Karma的HTML2JS预处理器做了一些非常类似的事情,它可能是一个很好的起点。它的设计目的是让您将HTML文件嵌入到测试工具中,用于各种目的,它的工作原理是:在Karma开始之前将它们编码为可嵌入的格式。如果你愿意用一点预处理代码来填补空白,那么使用同样的机制,你几乎可以嵌入任何你想要的东西。

我必须先将excel文件转换成JSON?然后像这里提到的那样读它?是的,这是常见的模式。不过,使用原始XLS可能会令人沮丧,因为一旦对其进行了编码,又会怎样呢?你可以破译它。。。但是你不能用它调用Excel(除非你在做一些奇怪的事情,比如从MSIE调用ActiveX对象?)。如果您想从原始JS访问此文件,您是否考虑过CSV或类似文件?Excel解析器部分可以。我已经有了一个Excel解析器,这是我想要进行单元测试的。我看到,如果我们加入因果报应,文件将被送达。我们能不能直接从茉莉花那里得到它?不。。。因为当你进入Jasmine时,你已经进入了浏览器。没有JS方法可以直接打开本地文件并以这种方式使用它们。如果您不介意在测试周期中进行一些手动输入,您可以使用FileReader API之类的东西,但所有这些都需要用户进行一些交互来处理浏览器安全控制。除非你想禁用它们?