小编pre*_*eve的帖子

使用Jest和Typescript模拟全局对象

我有一个React组件。无论好坏,我都使用由Routes公开的全局对象-Rails js-routes的宝石。我有一个使用Jest的快照测试,它测试了碰巧使用Routes全局函数的简单组件。

在我的测试中,我想嘲笑Routes。因此,当我的组件调用时Routes.some_path(),我可以返回一些任意字符串。

我主要遇到的错误是Cannot find name 'Routes'.

这是我的设置:

package.json

"jest": {
  "globals": {
    "ts-jest": {
      "enableTsDiagnostics": true
    }
  },
  "testEnvironment": "jsdom",
  "setupFiles": [
    "<rootDir>/app/javascript/__tests__/setupRoutes.ts"
  ]
...
Run Code Online (Sandbox Code Playgroud)

setupRoutes.ts(这似乎是最受欢迎的解决方案)

const globalAny:any = global;

globalAny.Routes = {
  some_path: () => {},
};
Run Code Online (Sandbox Code Playgroud)

myTest.snapshot.tsx

import * as React from 'react';
import {shallow} from 'enzyme';
import toJson from 'enzyme-to-json';

import MyComponent from 'MyComponent';

describe('My Component', () => {
  let component;

  beforeEach(() => { …
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs jest

4
推荐指数
1
解决办法
2190
查看次数

angular.bootstrap() - 引导角度应用程序,无需ng-app或ng-controller

我正在尝试创建一个角度应用程序,可以运输和自举几乎没有指令.理想情况下,您将包含js文件:

<script src="myapp.js"></script>
Run Code Online (Sandbox Code Playgroud)

然后在页面上放一个div:

<div id="myDiv"></div>
Run Code Online (Sandbox Code Playgroud)

并启动应用程序,如:

angular.bootstrap(document.getElementById('myDiv'),['myApp']);
Run Code Online (Sandbox Code Playgroud)

不用说,这不起作用.

这拨弄看到它与到位的NG-*指令和工作这一个没有.

我想我的问题是 - 这甚至可能吗?

理想情况下,我想实现类似Stripe的应用程序:

<script
  src="https://checkout.stripe.com/v2/checkout.js" class="stripe-button"
  data-key="pk_test_czwzkTp2tactuLOEOqbMTRzG"
  data-amount="2000"
  data-name="Demo Site"
  data-description="2 widgets ($20.00)"
  data-currency="usd"
  data-image="/128x128.png">
</script>
Run Code Online (Sandbox Code Playgroud)

但无法找到办法让这个工作.主要目标是不必公开角度细节以使用我的应用程序.

javascript angularjs

2
推荐指数
1
解决办法
6065
查看次数

标签 统计

javascript ×2

angularjs ×1

jest ×1

reactjs ×1

typescript ×1