您好,我正在尝试将一些依赖项注入到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) 我想使用 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) 我在集成测试我的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中执行两者都导致同样的失败,即service是null
这是Grails 1.3.6
有关如何使我的集成测试工作的任何建议吗?
我正在尝试构建一个模式,用户可以实现一个简单的接口,它接受一种类型的对象并返回另一种,然后还有一些类型的链对象,它由一系列这些变换组成.
我遇到的问题是在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
collections ×1
cucumber-jvm ×1
express ×1
gatling ×1
generics ×1
grails ×1
groovy ×1
javascript ×1
middleware ×1
scala ×1
testing ×1
type-safety ×1