Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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 chrome未定义-Mocha和Typescript_Javascript_Node.js_Typescript_Mocha.js - Fatal编程技术网

Javascript chrome未定义-Mocha和Typescript

Javascript chrome未定义-Mocha和Typescript,javascript,node.js,typescript,mocha.js,Javascript,Node.js,Typescript,Mocha.js,我很难用typescript编译测试。当尝试运行npm测试时got onClicked:chrome.browserAction!==未定义?chrome.browserAction.onClicked:未定义 我有一些基本的测试,看起来像是: import Nightmare from "nightmare"; import * as chai from "chai"; const Client = require('node-rest-client').Client; import chai

我很难用
typescript
编译测试。当尝试运行
npm测试时
got

onClicked:chrome.browserAction!==未定义?chrome.browserAction.onClicked:未定义

我有一些基本的测试,看起来像是:

import Nightmare from "nightmare";
import * as chai from "chai";
const Client = require('node-rest-client').Client;
import chaiString from "chai-string";
chai.use(chaiString);

import DomainDriver from "../../app/scripts/domains/driver";
const expect: any = chai.expect;
{
  ...
  "test": "mocha --recursive --require ts-node/register --require babel-core/register tests/domains/*"
},
export default {
  browserAction: {
    onClicked: chrome.browserAction !== undefined ? chrome.browserAction.onClicked : undefined,
测试配置如下所示:

import Nightmare from "nightmare";
import * as chai from "chai";
const Client = require('node-rest-client').Client;
import chaiString from "chai-string";
chai.use(chaiString);

import DomainDriver from "../../app/scripts/domains/driver";
const expect: any = chai.expect;
{
  ...
  "test": "mocha --recursive --require ts-node/register --require babel-core/register tests/domains/*"
},
export default {
  browserAction: {
    onClicked: chrome.browserAction !== undefined ? chrome.browserAction.onClicked : undefined,
模块代码如下:

import Nightmare from "nightmare";
import * as chai from "chai";
const Client = require('node-rest-client').Client;
import chaiString from "chai-string";
chai.use(chaiString);

import DomainDriver from "../../app/scripts/domains/driver";
const expect: any = chai.expect;
{
  ...
  "test": "mocha --recursive --require ts-node/register --require babel-core/register tests/domains/*"
},
export default {
  browserAction: {
    onClicked: chrome.browserAction !== undefined ? chrome.browserAction.onClicked : undefined,
app
目录get是用webpack编译的,但它在
npm测试中抛出错误。
以下gulp任务已使用webpack成功运行

吞咽任务

gulp.task(`${PLATFORM}-webpack`, (callback) => {

    webpack(Object.create(webpackConfig), function(err, stats) {
        if(err) throw new Exception(`${PLATFORM}-webpack`, err);
        console.log(`[${PLATFORM}-webpack]`, stats.toString({
            colors: true
        }));
        callback();
    });
});
我还缺什么吗?
感谢您查看您的目录您要查找的文件位于“../../app/domains/driver.ts”中,除非您键入了目录。

chrome.browserAction是web扩展代码。Node.js不知道chrome全局或web扩展

如果您想测试web扩展代码,您将需要为您使用的每个API实现一个模拟实例,因为遗憾的是,到目前为止还没有类似的实例。我已经开始为我的扩展创建一些模拟函数:


记住,我做这些是为了满足我的需要。它们并不完整,也不涵盖所有情况。

我通过将
chrome
定义为

const chrome = require('sinon-chrome/apps');
(global as any).chrome = chrome;

这是有问题的打字错误,但错误仍然存在。我没有对
chrome.tabs
或任何与
chrome
api相关的测试。我还需要这个类吗?在测试的某个时候,显示的代码被执行了。您需要防止在测试中执行此代码以避免此问题。您可以检查环境当前是否正在运行测试,如下所述:另一种选择(以及更具体的检查)是在使用全局变量“chrome”之前检查它是否存在。