小编Sil*_*ICE的帖子

ExpressJS 路由中间件中的依赖注入

您好,我正在尝试将一些依赖项注入到expressjs 路由中间件中。

通常在你的主应用程序中你会这样做:

const express = require('express');
const userRouter = require('./routes/users.js');
const app = express();
app.use('/users', userRouter);
Run Code Online (Sandbox Code Playgroud)

在你的users.js你会有类似的东西:

const express = require('express');
const router = express.Router()
router.post('/user', function (req, res, next) {...}
router.get('/user/:id', function (req, res, next) {...}
router.put('/user/:id', function (req, res, next) {...}
router.delete('/user/:id', function (req, res, next) {...}
Run Code Online (Sandbox Code Playgroud)

但我想传递一些依赖项,例如服务 URL,并且文档中不清楚如何执行此操作,我想如下:

const express = require('express');

function userRoutes(options) {
    const router = express.Router();

    router.post('/user', function (req, res, next) {...}
    router.get('/user/:id', function (req, res, next) {...}
    router.put('/user/:id', function (req, …
Run Code Online (Sandbox Code Playgroud)

javascript dependency-injection middleware express

6
推荐指数
1
解决办法
5285
查看次数

以编程方式执行 Gatling 测试

我想使用 Cucumber JVM 之类的东西来驱动为 Gatling 编写的性能测试。

理想情况下,Cucumber 功能会以某种方式动态构建场景 - 可能重用类似于“高级教程”中描述的方法的预定义链对象,例如

val scn = scenario("Scenario Name").exec(Search.search("foo"), Browse.browse, Edit.edit("foo", "bar")
Run Code Online (Sandbox Code Playgroud)

我已经查看了 Maven 插件如何执行脚本,并且我也看到提到使用 App trait 但我找不到任何关于后者的文档,这让我觉得之前有人会想要这样做...

任何人都可以(Gatling noob)指出一些文档或如何实现这一目标的示例代码的方向吗?

编辑 20150515

所以要多解释一点:

我创建了一个 trait,旨在建立一系列,我认为,由 Cucumber 步骤触发的 ChainBuilders:

trait GatlingDsl extends ScalaDsl with EN {

  private val gatlingActions = new ArrayBuffer[GatlingBehaviour]

  def withGatling(action: GatlingBehaviour): Unit = {
    gatlingActions += action
  }
}
Run Code Online (Sandbox Code Playgroud)

GatlingBehaviour 看起来像这样:

object Google {

  class Home extends GatlingBehaviour {
    def execute: ChainBuilder =
      exec(http("Google Home")
        .get("/")
      )
  }

  class Search extends …
Run Code Online (Sandbox Code Playgroud)

testing performance-testing cucumber-jvm gatling

5
推荐指数
1
解决办法
3187
查看次数

集成测试带注入的Grails服务

我在集成测试我的Grails服务时遇到问题,因为测试中的服务没有被注入到我的测试中.我已经按照Stackoverflow上其他问题的答案的建议,但仍然无法注入我的服务.以下课程如下/<project_root>/test/integration/com/example:

package com.example

import grails.test.GrailsUnitTestCase

class MyServiceIntegrationTest extends GroovyTestCase {

    MyService service;

    public void testService() {
        assert service != null
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试从命令行(grails test-app)和IDEA中执行两者都导致同样的失败,即servicenull

这是Grails 1.3.6

有关如何使我的集成​​测试工作的任何建议吗?

grails groovy integration-testing

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

Scala中的Typesafe可组合构建器链,带有泛型

我正在尝试构建一个模式,用户可以实现一个简单的接口,它接受一种类型的对象并返回另一种,然后还有一些类型的链对象,它由一系列这些变换组成.

我遇到的问题是在Scala中获得正确的泛型类型 - 我的Scala-foo不是那么高,所以任何建议都是最受欢迎的,包括告诉我我这样做是错误的/非scala方式!

trait Builder[INPUT, OUTPUT] {

  var input: Class[INPUT]
  var output: Class[OUTPUT]
  def process(input: RDD[INPUT]): RDD[OUTPUT]
}


class ComposableBuilder[INPUT, OUTPUT](input: Class[INPUT], output: Class[OUTPUT], phases: Seq[Phase[Any, Any]]) {

  def appendBuilder[U](phase: Phase[OUTPUT, U]): ComposableBuilder[INPUT, U] = {
    new ComposableBuilder[INPUT, U](input.class, phase.output.class, phases :+ phase)
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,示例用法将是:

ComposableBuilder(Seq(
    ModelEnricher(),
    CollateRecordsByKey(),
    RecordBuilder(),
)).execute(input)
Run Code Online (Sandbox Code Playgroud)

很明显,对于任何连续对的构造函数序列都有一个隐含的约束 builder[0].output == builder[1].input

generics collections scala type-safety

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