繁体   English   中英

chrome未定义-摩卡和打字稿

[英]chrome is not defined - Mocha and Typescript

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

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,

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

我还缺少什么吗? 谢谢

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

chrome.browserAction是网络扩展代码。 Node.js不了解chrome全局或Web扩展。

如果要测试Web扩展代码,则需要为所使用的每个API实现一个模拟实例,可惜的是,到目前为止,还没有类似的实例。 我已经开始在这里为我的扩展创建一些模拟功能: https : //github.com/Lusito/forget-me-not/blob/master/test/browserMock.ts

请记住,我做了那些适合我的需求。 它们绝不完整,也不涵盖所有情况。

我通过将chrome定义为

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM