我继承了一个没有测试的 typescript@2 项目。
它基本上是一个 cli 任务运行程序,一个任务多次请求外部 api 以便创建文件。作为第一个故障保护,我想设置验收测试。
因此,我想模拟对外部 api 的调用并从本地文件获取响应。我该如何实现这一目标?
我研究过 nock,因为它似乎提供了此功能,但我该如何使用它呢?
(我没有提供例子,因为我打算自己回答我的问题,因为我最近刚刚经历了整个磨难。)
给定api的JSON输出:
{
"id": 13,
"name": "horst",
"cars": [{
"brand": "VW",
"maxSpeed": 120,
"isWastingGazoline": true,
}]
}
Run Code Online (Sandbox Code Playgroud)
我想为typescript定义接口:
export interface Car {
brand: string;
maxSpeed: number;
isWastingGazoline: boolean;
}
export interface RaceCarDriver {
id: number;
name: string;
cars: Car[];
}
Run Code Online (Sandbox Code Playgroud)
但我不希望他们手动输入它们,我宁愿让脚本为我生成它们.
我想 dockerify 一个 scala 应用程序。
我使用sbt-native-packager, 并且在本地构建图像时通过
sbt docker:publishLocal
Run Code Online (Sandbox Code Playgroud)
我惊讶地发现它会使用:
openjdk:latest
Run Code Online (Sandbox Code Playgroud)
作为其基础图像。
我喜欢将我的 docker 镜像指向某个版本,并且我知道我的应用程序当前需要 Java 8 并且会在 Java 9 上崩溃;并且该latest标签可能会指向未来的新主要版本。
我对 Docker 插件如何通过 sbt-native-packager 工作有点困惑。为什么要用它openjdk:latest作为基础?我怎样才能将其设置为不同的东西,例如:openjdk/8-jdk?
作为一个scala初学者,我想标记集成测试,以便在某些情况下排除它们的运行(因为它们可能非常慢并且可能因外部更改/问题而中断).
我这样创建了标签integration:
import org.scalatest.{FlatSpec, Matchers, Tag}
object integration extends Tag("com.dreamlines.tags.integration")
Run Code Online (Sandbox Code Playgroud)
在我的测试中,我标记了一个测试:
class SchemaValidation extends FlatSpec with Matchers {
it should "return valid json" taggedAs (integration) in {
...
assertSchema(response, endpointSchema)
}
}
Run Code Online (Sandbox Code Playgroud)
然而,在阅读如何基于文档中的标记过滤某些测试时,我感到非常困惑,因为突然我读到我应该使用 org.scalatest.tools.Runner
scala [-cp scalatest-<version>.jar:...] org.scalatest.tools.Runner [arguments]
Run Code Online (Sandbox Code Playgroud)
哪个有我正在寻找的旗帜:
-l指定要排除的标记(注意:每个-l只允许一个标记名称)-l SlowTests -l PerfTests
然而,我只习惯通过以下方式运行我的测试:
sbt test
Run Code Online (Sandbox Code Playgroud)
我不知道这里的scala测试运行器指的是什么,或者当我运行时引擎盖下发生了什么sbt test.我真的迷路了.
我期待执行测试并不完全不同于:
sbt test --ignore-tag integration
Run Code Online (Sandbox Code Playgroud) 我有一个使用PhpStorm管理的TypeScript项目。所有*.ts文件都被正确识别为TypeScript文件,在我的文件类型设置中,我具有*.ts文件映射TypeScript。
所有文件?不,一个文件不会固执地视为TypeScript文件,而是显示为纯文本。我不知道如何将其标记为TypeScript文件。
所有*.ts文件旁边都有适当的ts图标。这还没有。
当我打开流氓.ts文件时,PhpStorm告诉我有该文件类型的插件,但是如果我尝试遵循该路线,那么所有导致我走向的便是PhpStorm尝试安装我不需要的TypoScript插件。所有。
我试过了:
*.ts向*.txt和回*.ts;它仍然是一个简单的文本文件,没有突出显示语法,并且导入该文件的其他TypeScript代码都有错误,指出在PhpStorm中找不到引用。
尽管这是一个有效的TypeScript项目,但tsc在命令行上运行正常。
如何告诉PhpStorm将此恶意.ts文件也视为TypeScript文件?
我正在与colyseus(节点游戏服务器框架)进行服务器端聊天.我使用typescript与module:commonjs因为colyseus是建立在commonjs之上的.
我有课程ChatRoom延伸Colyseus.Room.在运行时我收到此错误:
Class constructor Room cannot be invoked without 'new'.
Run Code Online (Sandbox Code Playgroud)
而javascript中的麻烦:
function ChatRoom() {
return _super !== null && _super.apply(this, arguments) || this;
}
Run Code Online (Sandbox Code Playgroud)
来自typescript类:
import {Room} from "colyseus";
export class ChatRoom extends Room {
onInit(options) {
console.log("BasicRoom created!", options);
}
onJoin(client) {
this.broadcast(`${ client.sessionId } joined.`);
}
onLeave(client) {
this.broadcast(`${ client.sessionId } left.`);
}
onMessage(client, data) {
console.log("BasicRoom received message from", client.sessionId, ":", data);
this.broadcast(`(${ client.sessionId }) ${ data.message }`);
}
onDispose() {
console.log("Dispose BasicRoom"); …Run Code Online (Sandbox Code Playgroud) There appears to be a similar question as it about the predecessor to inspect, and I want to use inspect.
I have created a basic docker-compose stack from which I run my nodejs application. I want to listen for the debugger session and debug my JavaScript code within my local WebStorm.
I enter the container via
docker exec -it my_container bash
Run Code Online (Sandbox Code Playgroud)
And I call my nodejs script with the debugger running via inspect:
node --inspect ./cli.js start …Run Code Online (Sandbox Code Playgroud) 在下面的示例中,我想不出任何分配Pick<Object, Key>给Partial<Object>不合理的情况,因此我希望这是允许的。
谁能澄清为什么不允许?
const fn = <T, K extends keyof T>(partial: Partial<T>, picked: Pick<T, K>) => {
/*
Type 'Pick<T, K>' is not assignable to type 'Partial<T>'.
Type 'keyof T' is not assignable to type 'K'.
'keyof T' is assignable to the constraint of type 'K', but 'K' could be instantiated with a different subtype of constraint 'string | number | symbol'.
*/
partial = picked;
};
Run Code Online (Sandbox Code Playgroud)
我想通过 ts-mockito@2.5.0 创建一个类的模拟对象,但我无法正确设置它。
这是人为的测试用例:
import {expect} from "chai";
import {
mock,
when,
} from "ts-mockito";
class MockMe {
public doStuff(): string {
return "I AM THE ORIGINAL VALUE";
}
}
describe("ts-mockito weirdness", async () => {
it("should create a mock with specific return values", async () => {
const mocked = mock(MockMe);
await when(mocked.doStuff()).thenReturn("I AM MOCKED");
const actualReturnValue = mocked.doStuff();
expect(actualReturnValue).to.eq("I AM MOCKED");
});
});
Run Code Online (Sandbox Code Playgroud)
正如测试用例所暗示的那样,我希望从我的模拟中返回“I AM MOCKED”的返回值。
但是,我得到一个TS-的Mockito-specifc对象,而不是,包含类似的属性:methodStubCollection,matchers, mocker,和name。

我应该如何设置它按预期工作的模拟?
旁注:这个测试用例只是为了展示我遇到的奇怪行为。这不是我的实际测试。我想在不同服务的单元测试中使用模拟。)
在symfony1.1中,我开发了一个模块,该模块不应包含其应用程序的任何传递的javascripts和样式表.
因此,我创建了一个特定于模块的view.yml,但我找不到禁用它们的语法.
我原来的问题只涉及JavaScript和CSS.但现在我想删除metas和http_tags.出于某种原因,我得到:
all:
http_metas: [-*]
metas: [-*]
Run Code Online (Sandbox Code Playgroud)
实际的标签
<meta name="0" content="-*" />
Run Code Online (Sandbox Code Playgroud)
有谁知道这里有什么不同?