通过shell脚本包装器运行Node模块的Istanbul测试覆盖

时间:2016-12-13 15:14:03

标签: shell istanbul test-coverage

我的package.json中的脚本目前看起来像这样:

<?php

namespace App\Http\Middleware;

use Illuminate\Http\Request;

class Adminlogin {

    public function handle($request, Closure $next) {
        if (!$request->session()->has('userid')) {
            return view('admin.auth.login');
        }
            return $next($request);
    }

}

测试脚本运行此.sh文件:

"scripts": {
  "test": "./spec/run-local-tests.sh",
  "coverage": "istanbul cover jasmine-node spec",
  "start": "gulp"
}

但是我现在想要更改我的#!/bin/sh echo "Renaming database file produced by previous test run" mv -f 'shared-local-instance.db' 'shared-local-instance.db.previous' echo "Starting DynamoDB" java -Djava.library.path=./DynamoDBLocal_lib -jar dynamodb/DynamoDBLocal.jar -sharedDb & export JAVA_PID=$! echo "Running Tests" ./node_modules/jasmine-node/bin/jasmine-node spec echo "Cleaning up DynamoDB - killing local instance" kill -9 $JAVA_PID 脚本以运行shell文件:

coverage

但我接到一个错误,上面写着:

"coverage": "istanbul cover ./spec/run-local-tests.sh"

有没有办法让instanbul和我的shell文件运行?

1 个答案:

答案 0 :(得分:1)

RTFM。

伊斯坦布尔的文件说:

  

istanbul cover命令可用于获取任何节点脚本的覆盖对象和报告。

(强调我的)

istanbul cover需要一个节点脚本。它无法覆盖shell脚本或任何其他任意可执行文件。

您可以编写一个shell脚本来执行您需要的任何设置/清理,然后启动"scripts": { "test": "./spec/run-local-tests.sh", "coverage": "./spec/run-local-tests-with-coverage.sh", "start": "gulp" } ,并对其进行配置:

echo "Running Tests"
${COVERAGE} ./node_modules/jasmine-node/bin/jasmine-node spec

或者您可以修改现有脚本,可能是这样的:

"scripts": {
  "test": "./spec/run-local-tests.sh",
  "coverage": "env COVERAGE='istanbul coverage' ./spec/run-local-tests.sh",
  "start": "gulp"
}

然后使用环境变量set

调用它
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
require "connection.php";
$email = $_POST['email'];

if(isset($_POST['submit']))
{

$check = mysqli_query($conn, "select * from users where email = '$email' ");
$row = mysqli_fetch_array($check);

$message ="Please click here to create a new password www.jasmine.com/id?=" . $row['id'];
$subject = 'Change password';
$body = "E-Mail: $email\n Message:\n $message";

if($row)
{

    $res = mail ($email, $subject, $body);
    var_dump($res);die;
    echo "Please check your email";
}
}
else
{
echo  "Email Not Found";
}
?>