chrome 未定义 - Mocha 和 Typescript

Posted

技术标签:

【中文标题】chrome 未定义 - Mocha 和 Typescript【英文标题】:chrome is not defined - Mocha and Typescript 【发布时间】:2018-06-18 05:12:43 【问题描述】:

我很难用typescript 编译测试。当尝试运行npm test得到了

onClicked: chrome.browserAction !== undefined ? 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,

app 目录使用 webpack 编译,但使用npm test 会引发错误。 以下 gulp 任务使用 webpack 成功运行。

Gulp 任务

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();
    );
);

我还是错过了什么吗? 谢谢

【问题讨论】:

【参考方案1】:

查看您的目录,您要查找的文件位于“../../app/domains/driver.ts”中,除非您输入了目录。

【讨论】:

这是有问题的错字,但错误仍然存​​在【参考方案2】:

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

如果您想测试网络扩展代码,您需要为您使用的每个 API 实现一个模拟实例,遗憾的是,目前还没有类似的实例。我已经开始在这里为我的扩展创建一些模拟函数: https://github.com/Lusito/forget-me-not/blob/master/test/browserMock.ts

请记住,我制作这些是为了满足我的需求。它们绝不是完整的,也不涵盖所有情况。

【讨论】:

我没有对chrome.tabs 或任何与chrome api 相关的测试。我还需要上这门课吗? 在您的测试中的某个时刻,显示的代码会被执行。您需要阻止在测试中执行此代码以避免该问题。您可以检查环境当前是否正在运行测试,如下所述:***.com/questions/29183044/… 另一种选择(以及更具体的检查)是在使用之前检查全局变量“chrome”是否存在。【参考方案3】:

我通过将chrome 定义为解决它

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

【讨论】:

以上是关于chrome 未定义 - Mocha 和 Typescript的主要内容,如果未能解决你的问题,请参考以下文章

“未检测到侦听器”验证错误 Mongoose 和 Mocha

Mocha 未显示 chai 错误消息

Mocha Chai 基本 GET 请求未正确记录通过和失败

自定义input[type="file"]的样式

自定义input[type="file"]的样式

Mocha:未捕获的 AssertionError:预期 200 为 404