小编k0p*_*kus的帖子

如何使用nock记录对文件的请求和响应并在mocha验收测试中使用它进行播放?

我继承了一个没有测试的 typescript@2 项目。

它基本上是一个 cli 任务运行程序,一个任务多次请求外部 api 以便创建文件。作为第一个故障保护,我想设置验收测试。

因此,我想模拟对外部 api 的调用并从本地文件获取响应。我该如何实现这一目标?

我研究过 nock,因为它似乎提供了此功能,但我该如何使用它呢?

(我没有提供例子,因为我打算自己回答我的问题,因为我最近刚刚经历了整个磨难。)

javascript acceptance-testing mocha.js typescript nock

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

如何将json转换为打字稿界面?

给定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)

但我不希望他们手动输入它们,我宁愿让脚本为我生成它们.

如何将json转换为typescript接口?我也不想使用像json2ts这样的web 服务.

json code-generation interface typescript

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

如何为 sbt 原生打包器的 DockerPlugin 设置基础镜像?

我想 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 sbt docker sbt-native-packager

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

如何只使用flatspec通过sbt在scala中运行没有某个​​标签的测试?

作为一个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)

unit-testing scala sbt scalatest

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

如何在PhpStorm中更改文件的文件类型?

我有一个使用PhpStorm管理的TypeScript项目。所有*.ts文件都被正确识别为TypeScript文件,在我的文件类型设置中,我具有*.ts文件映射TypeScript。

所有文件?不,一个文件不会固执地视为TypeScript文件,而是显示为纯文本。我不知道如何将其标记为TypeScript文件。

所有*.ts文件旁边都有适当的ts图标。这还没有。

当我打开流氓.ts文件时,PhpStorm告诉我有该文件类型的插件,但是如果我尝试遵循该路线,那么所有导致我走向的便是PhpStorm尝试安装我不需要的TypoScript插件。所有。

我试过了:

  • 重命名文件,从*.ts*.txt和回*.ts;
  • 在PhpStorm中将其删除,然后再次通过git检出;
  • 在“项目”窗格中右键单击该文件,希望有一个设置以将其标记为TypeScript文件,但似乎不存在此类内容;
  • 使缓存无效并重新启动。

它仍然是一个简单的文本文件,没有突出显示语法,并且导入该文件的其他TypeScript代码都有错误,指出在PhpStorm中找不到引用。

尽管这是一个有效的TypeScript项目,但tsc在命令行上运行正常。

如何告诉PhpStorm将此恶意.ts文件也视为TypeScript文件?

config file-type phpstorm

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

没有'new' - 使用commonjs的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)

commonjs node.js typescript

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

How to connect to a remote nodejs debug session using PhpStorm / WebStorm?

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)

remote-debugging node.js webstorm docker docker-compose

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

TypeScript:将 `Pick&lt;T, K&gt;` 分配给 `Partial&lt;T&gt;`

在下面的示例中,我想不出任何分配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)

TypeScript 游乐场示例

generics typescript

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

如何使用 ts-mockito 模拟方法?

我想通过 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对象,而不是,包含类似的属性:methodStubCollectionmatchersmocker,和name

来自 ts-mockito 的意外响应的屏幕截图

我应该如何设置它按预期工作的模拟?


旁注:这个测试用例只是为了展示我遇到的奇怪行为。这不是我的实际测试。我想在不同服务的单元测试中使用模拟。)

unit-testing mocking typescript ts-mockito

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

如何在view.yml中为模块禁用传递的JavaScript和样式表文件?

在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)

有谁知道这里有什么不同?

syntax symfony1

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