小编pap*_*boy的帖子

Angular场景e2e测试可以集成外部资源工作流

您如何使用Karma Runner(ex-Testacular)e2e场景运行器在e2e测试中集成异地/外部应用程序/外部资源工作流程?

基本情景:

  1. 应用程序有一个按钮.
  2. 单击按钮将数据发送到服务提供商X(例如,提交http://service/submit或等等).
  3. 提供者X需要在此URL处单击/提交/操作.
  4. 然后,提供商X将某些内容发回给我们的应用

我不是问"你如何存根提供者X".我问你如何实际端到端测试 - 所以我们的测试实际上可以捕获第三方服务API的变化.我基本上希望能够推出一个应用程序外的网站,类似于你能够使用像Selenium的Webdriver这样的东西.

目前我的问题是element( ref ).click()用于尝试第2步,它似乎没有加载所需的网站,因此没有DOM可以采取行动,无法完成e2e.

javascript angularjs karma-runner

14
推荐指数
1
解决办法
3196
查看次数

Stripe Checkout泄漏内存吗?

我看到的问题是,当您使用规范的"自定义"指南将Stripe Checkout加载到页面中,对其进行配置,然后打开和关闭它几次,浏览器内存使用量会不断跳跃.有时,sorta会稍微释放,但残留总是会增长.在一个长期存在的页面/ SPA上,最终会有东西爬行.

  1. 使用--enable-precise-memory-info标记启动Google Chrome (无论是否带有此标记,都会出现问题)
  2. 复制其网站上的"自定义"示例:https://stripe.com/docs/checkout#integration-custom(或使用您自己的设置,结果相同).
  3. 点击"购买"按钮(或触发你的按钮stripeInstance.open(cfg)),摆弄弹出窗口,关闭.
  4. 重复步骤3,逐渐观察记忆

您可以使用memory-stats.js或仅在(Chrome)控制台中运行来观看内存:

performance.memory.usedJSHeapSize
Run Code Online (Sandbox Code Playgroud)

我确信这必须是"我"而不是条纹.他们不会泄漏如此糟糕的事件openclose事件吗?


编辑:这是一个JS小提琴,它可以复制他们的演示代码:https://jsfiddle.net/p1Lfuewt/

还有一个5秒间隔的内存屏幕截图,基本上只需点击"购买"即可打开和关闭它们的小部件(不知道那个承诺错误是什么,就是这些):

内存泄漏

javascript memory-leaks google-chrome stripe-payments

9
推荐指数
1
解决办法
217
查看次数

如何将已知的接口属性与自定义索引签名相结合?

你如何输入一个可以同时拥有几个声明的可选属性的对象,例如:

{ 
    hello?: string, 
    moo?: boolean 
}
Run Code Online (Sandbox Code Playgroud)

以及自定义属性(必须是函数),例如:

    [custom: string]: (v?: any) => boolean
Run Code Online (Sandbox Code Playgroud)

这是我希望看到的,例如:

const myBasic: Example = {moo: false}
// -> ? Valid! Using known keys

const myValid: Example = {hello: 'world', customYo: () => true}
// -> ? Valid! "customYo" is a function returning a bool. Good job!

const myInvalid: Example = {hello: 'world', customYo: 'yo!'}
// -> ?? Invalid! "customYo" must be a function returning a boolean
Run Code Online (Sandbox Code Playgroud)

尝试将索引签名添加到具有已知键的接口(即hello?: string, moo?: boolean)需要所有键都是索引签名类型的子集(在这种情况下,返回 …

typescript index-signature

4
推荐指数
2
解决办法
2421
查看次数

如何将Node.js集群与ZeroMQ回复工作者一起使用

基本问题是"如何将ZeroMQ REPLY套接字设置为工作者?".

实际上,如何使用具有ZeroMQ REPLY服务器的HTTP服务器替换默认示例,例如:

var cluster = require('cluster'),
    zmq = require('zmq');

if (cluster.isMaster) {
  cluster.fork();
  cluster.fork();
}
else {
  // Using `http.createServer(..).listen(5555);` works perfectly

  // However, the following does not:
  var socket = zmq.socket('rep');
  socket.bind( "tcp://*:5555", function (err) { console.log(process.pid, err); } );
}
Run Code Online (Sandbox Code Playgroud)

第一个worker记录'undefined'(即没有错误),而第二个worker记录错误:Address already in use.

从" 工作原理 "文档来看,这里似乎合适的一点(重点补充):

当您调用server.listen(...)worker时,它会序列化参数并将请求传递给主进程.如果主进程已经具有与工作者要求匹配的侦听服务器,则它将句柄传递给工作者.如果它还没有匹配该要求的侦听服务器,那么它将创建一个,并将句柄传递给worker.

如何"匹配要求"与ZeroMQ REPLY插座?

javascript sockets zeromq node.js

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