Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Javascript BlanketJS+;Jasmine 2.0不工作_Javascript_Requirejs_Jasmine_Blanket.js - Fatal编程技术网

Javascript BlanketJS+;Jasmine 2.0不工作

Javascript BlanketJS+;Jasmine 2.0不工作,javascript,requirejs,jasmine,blanket.js,Javascript,Requirejs,Jasmine,Blanket.js,我一直在用Jasmine 2.0.0进行测试,它运行起来没有任何问题。 但是,当我在代码中附加BlanketJS时,出现了一个问题 我使用了一个与Jasmine 1.3.1一起工作的specRunner()。但当我用Jasmine 2.0.0替换Jasmine 1.3.1时,它不起作用 以下是BlanketJS repo的原始代码: <html> <head> <title>Jasmine Spec Runner</title> <link

我一直在用Jasmine 2.0.0进行测试,它运行起来没有任何问题。 但是,当我在代码中附加BlanketJS时,出现了一个问题

我使用了一个与Jasmine 1.3.1一起工作的specRunner()。但当我用Jasmine 2.0.0替换Jasmine 1.3.1时,它不起作用

以下是BlanketJS repo的原始代码:

<html>
<head>
<title>Jasmine Spec Runner</title>
<link rel="stylesheet" type="text/css" href="../vendor/jasmine.css">
<script type="text/javascript" src="../vendor/jasmine.js"></script>
<script type="text/javascript" src="../vendor/jasmine-html.js"></script>
<script type="text/javascript" src="../helpers/console_runner.js"></script>
<script type="text/javascript" src="../../node_modules/requirejs/require.js"></script>
<script type="text/javascript" data-cover-only="code/" data-cover-never="['all.tests','code/tests']" 
src="../../dist/qunit/blanket.js"> </script>
<script type="text/javascript" src="../../src/adapters/jasmine-blanket.js"></script>

<script type="text/javascript">
    if (window.require && typeof (window.require.config) === 'function') {
        require.config({
            baseUrl: './code'
        });
    }
</script>
<script type="text/javascript" src="code/all.tests.jasmine.js"></script>

<script type="text/javascript">
    (function () {
        window.blanketTestJasmineExpected=2;

        var jasmineEnv = jasmine.getEnv();
        jasmineEnv.updateInterval = 1000;

        var htmlReporter = new jasmine.HtmlReporter();
        var oldResult = htmlReporter.reportRunnerResults;

        jasmineEnv.addReporter(htmlReporter);

         /* this is just for our automated tests */
          window.jasmine_phantom_reporter = new jasmine.ConsoleReporter;

          jasmineEnv.addReporter(jasmine_phantom_reporter);
          /*   */

        jasmineEnv.specFilter = function (spec) {
            return htmlReporter.specFilter(spec);
        };

        var currentWindowOnload = window.onload;
         window.onload = function() {
            if (currentWindowOnload) {
              currentWindowOnload();
            }
            execJasmine();


          };

          function execJasmine() {
            jasmineEnv.execute();
          }

    })();
</script>
</head>
<body>
</body>
</html>

茉莉花跑步者
if(window.require&&typeof(window.require.config)==“函数”){
require.config({
baseUrl:“./code”
});
}
(功能(){
窗口。毛毯Jasminefected=2;
var jasmineEnv=jasmine.getEnv();
jasmineEnv.updateInterval=1000;
var htmlReporter=new jasmine.htmlReporter();
var oldResult=htmlReporter.reportRunnerResults;
jasmineEnv.addReporter(htmlReporter);
/*这只是为了我们的自动化测试*/
window.jasmine\u phantom\u reporter=新的jasmine.ConsoleReporter;
jasmineEnv.addReporter(jasmine_phantom_reporter);
/*   */
jasmineEnv.specFilter=函数(spec){
返回htmlReporter.specFilter(spec);
};
var currentWindowOnload=window.onload;
window.onload=函数(){
如果(currentWindowOnload){
currentWindowOnload();
}
茉莉花();
};
函数execJasmine(){
jasminev.execute();
}
})();
我添加了Jasmine 2.0.0文件并更改了以下代码:

....
<title>Jasmine Spec Runner</title>
<link rel="stylesheet" type="text/css" href="../vendor/jasmine.css">
<script type="text/javascript" src="../vendor/jasmine-2.0.0/jasmine.js"></script>
<script type="text/javascript" src="../vendor/jasmine-2.0.0/jasmine-html.js"></script>
<script type="text/javascript" src="../vendor/jasmine-2.0.0/boot.js"></script>
<script type="text/javascript" src="../helpers/console_runner.js"></script>
....
。。。。
茉莉花跑步者
....
将打印错误消息:

Uncaught TypeError: Cannot read property 'env' of undefined jasmine-html.js:38
Uncaught TypeError: Object #<Env> has no method 'currentRunner' jasmine-blanket.js:76
Uncaught TypeError:无法读取未定义的jasmine html.js:38的属性'env'
未捕获的TypeError:对象#没有方法“currentRunner”jasmine毯子。js:76

如何运行此specRunner页面而不出现问题?请给我一个解决办法。谢谢。

包层适配器使用currentRunner,但在2.0中已经不存在了。 毯子Jasmine适配器需要更新,因为此接口和报告器接口都已更改

打开jasmine-blanket.js文件,将底部的代码替换为:

BlanketReporter.prototype = {
        specStarted: function(spec) {
            blanket.onTestStart();
        },

        specDone: function(result) {
            var passed = result.status === "passed" ? 1 : 0;
            blanket.onTestDone(1,passed);
        },

        jasmineDone: function() {
            blanket.onTestsDone();
        },

        log: function(str) {
            var console = jasmine.getGlobal().console;

            if (console && console.log) {
                console.log(str);
            }
        }
    };

    // export public
    jasmine.BlanketReporter = BlanketReporter;

    //override existing jasmine execute
    var originalJasmineExecute = jasmine.getEnv().execute;
    jasmine.getEnv().execute = function(){ console.log("waiting for blanket..."); };


    blanket.beforeStartTestRunner({
        checkRequirejs:true,
        callback:function(){
            jasmine.getEnv().addReporter(new jasmine.BlanketReporter());
            jasmine.getEnv().execute = originalJasmineExecute;
            jasmine.getEnv().execute();
        }
    });
那么它应该会像预期的那样


埃塔-就我个人而言,我会改去伊斯坦布尔,因为毯子现在似乎很少更新(如果有的话)。伊斯坦布尔有更完整的覆盖统计数据(不仅仅是行-分支等),并且可以将代码气候等工具导出到lcov。它完美地与Jasmine或任何测试框架一起工作

现在实际上有一个2.x版jasmine的适配器。但我在配置它时仍然遇到一些问题。最终,我正确地配置了所有内容,这就是我得到的:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Tests</title>

    <link rel="stylesheet" href="components/jasmine.css">

    <script src="components/jasmine.js"></script>
    <script src="components/jasmine-html.js"></script>
    <script src="components/boot.js"></script>

    <script type="text/javascript" data-cover-only="app/" src="components/blanket.js" data-cover-adapter="components/jasmine-2.x-blanket.js"></script>
    <script src="components/blanket_browser.js"></script>
    <script src="components/jasmine-2.x-blanket.js"></script>

    <!-- sources -->
    <script src="components/angular.js"></script>
    <script src="components/angular-mocks.js"></script>

    <script src="app/custom-forms.js"></script>
    <script src="app/route-selector.js"></script>

    <!-- tests -->
    <script src="tests/custom-forms-tests.js"></script>
    <script src="tests/route-selector-tests.js"></script>
</head>
<body>
</body>
</html>

测验
注意:我使用bower检索jasmine和毯子,但对于我必须引用的毯子文件有一些混淆,因此:

  • “components/blanket.js”->我从dist/qunit/blanket.js获得这个文件

  • “components/blanket_browser.js”->src/blanket_browser.js

  • “components/jasmine-2.x-blanket.js”->src/adapters/jasmine-2.x-blanket.js


请注意,我还使用jasmine附带的boot.js,它工作正常。希望这些信息能帮助别人。

当你说它与Jasmine完美配合时……我能在我的Jasmine结果中显示结果吗,比如?