【问题标题】:How to mock navigator.language for typescript unit test如何模拟 navigator.language 进行打字稿单元测试
【发布时间】:2019-01-25 10:56:59
【问题描述】:

如何模拟要从单元测试中定义的 navigator.language?

下面的代码返回

ReferenceError: 导航器未定义

语言服务.ts

import { injectable } from "inversify";

@injectable()
export class LanguageService  {
    public getBrowserLanguage(): string {
        return navigator.language.split("-")[0];
    }
}

语言服务.spec.ts

// import stuff

    describe('Language Service tests', () => {
      it('should return de', () => {
        const language_service = new LanguageService();
        expect(language_service.getBrowserLanguage()).to.equal("de");
      });
    });

这听起来像是一项基本任务,但事实并非如此,因为即使我尝试在窗口对象上手动定义导航器,打字稿也会抛出一个错误,说导航器是只读的。

【问题讨论】:

    标签: javascript typescript mocha.js chai mocha-webpack


    【解决方案1】:

    1-安装jsdom包

    npm install jsdom jsdom-global --save-dev
    

    2- 相应地更改您的单元测试

    {
      "scripts": {
        "test": "mocha -r ts-node/register -r jsdom-global/register src/**/*.spec.ts"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-16
      • 2018-09-29
      • 2018-04-04
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多