小编Ste*_*kov的帖子

无法获得笑话+打字稿+ Axios测试

我在课堂上有以下方法:

import axios from 'axios'

public async getData() {
   const resp = await axios.get(Endpoints.DATA.URL)
   return resp.data
}
Run Code Online (Sandbox Code Playgroud)

然后,我试图建立一个Jest测试来做到这一点:

jest.mock('axios')

it('make api call to get data', () => {
   component.getData()
   expect(axios.get).toHaveBeenCalledWith(Endpoints.DATA.URL)
})
Run Code Online (Sandbox Code Playgroud)

问题是,因为我不是嘲笑的返回值,那么它给出了一个错误resp.data,因为我打电话datanullundefined对象。我花了至少2个小时的时间尝试各种方法来使此工作正常进行,但是我找不到能够模拟axios.get一些返回值的方法。

Jest的文档使用JavaScript,因此他们给出了这个示例,axios.get.mockResolvedValue(resp)但我不能调用,mockResolvedValue因为axios.getTypeScript 中不存在该方法。

另外,如果您知道除Jest之外的React的其他优秀测试库,这些库很容易为TypeScript做到这一点,请随时共享。

typescript reactjs jestjs axios

8
推荐指数
5
解决办法
4133
查看次数

Gradle 5 JUnit BOM和Spring Boot不正确的版本

我正在使用Gradle 5的BOM(物料清单)功能.这是我为JUnit 5依赖项描述它的方式:

testImplementation(enforcedPlatform("org.junit:junit-bom:5.4.0")) // JUnit 5 BOM
testImplementation("org.junit.jupiter:junit-jupiter-api")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
testImplementation("org.junit.jupiter:junit-jupiter-params")
Run Code Online (Sandbox Code Playgroud)

我的假设是提供BOM将解析依赖项的版本5.4.0.但是,他们得到了解决5.1.1.我不知道为什么.(我还要求enforcedPlatform()锁定指定的版本)

在此输入图像描述

检查JUnit 5的BOM我们发现所有org.junit.jupiter依赖项都以版本列出5.4.0(在项目中解析为5.1.1),所有org.junit.platform依赖项都列在版本中1.4.0,并在项目中正确解析.

我不确定我错过了什么,并希望在这里得到一些帮助.谢谢!

编辑:

我使用Sormuras响应并将所有BOM移动到dependencies {}块的顶部,但仍未获得版本5.4.0.然后我怀疑它可能来自我使用的Gradle Spring Dependency Management插件,所以当我评论它时,我得到了版本JUnit 5.4.0.如何禁用来自Gradle Spring Dependency Management插件的JUnit?

Gradle Spring依赖管理插件

最后:

我决定直接使用Spring Boot Dependencies BOM并删除Gradle插件:

implementation(platform("org.springframework.boot:spring-boot-dependencies:2.0.5.RELEASE"))

我想这个插件是在Gradle 5之前为那些版本的Gradle创建的,你不能使用BOM文件.现在有了BOM支持,我可以直接包含它.这样我的JUnit版本就像我在enforcedPlatform()块中指定的一样.

我接受了下面的Sam Brannen的答案,因为他很好地解释了问题是如何发生的以及解决了什么问题,我认为这对使用旧版本Gradle的人来说很重要.

junit gradle spring-boot junit5

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

如何永久删除 GORM 中的关联

我想知道如何永久删除GORM 中的关联。我尝试了文档中显示的所有示例,但无法永久删除关联。例如,我对 GORM 关于删除清除关联的文档感到困惑,其中明确指出:won't delete those objects from DB。(我不明白删除对象而不从数据库中删除它们意味着什么。)

我有类似的结构:

type User struct {
    gorm.Model
    City    string `sql:"type:varchar(255);not null"`
    Cards   []Card `gorm:"foreignKey:UserID;constraint:OnDelete:CASCADE"`
}

type Card struct {
    ID      uint   `gorm:"primary_key"`
    UserID  uint   `gorm:"column:user_id"`
}
Run Code Online (Sandbox Code Playgroud)

我想以 GORM 形式执行以下 SQL 查询:

DELETE c
FROM cards c
JOIN users u ON c.user_id = u.id
WHERE u.name = `Madrid`
Run Code Online (Sandbox Code Playgroud)

go go-gorm

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

我什么时候应该升级 go.mod 中的 Go 版本?

通常,Go 项目将处理两个版本的 Go:

  • 主机上安装的 Go 版本
  • 定义的 Go 的最低版本go.mod

我不太明白何时升级版本,go.mod何时不升级版本(如果是这样的话)。go 1.19例如,如果我本地安装了 Go 1.16.9,那么在文件中设置是否有意义go.mod?Go 版本应该go.mod与本地安装的 Go 版本相同吗?可以更高或者更低吗?

让我感到困惑的是这个术语minimum version of Go required by the current module,即这是否类似于 Android 的最低兼容版本?较低的版本是否go.mod意味着该模块可以安装在更广泛的机器上,这是一件好事吗?

go

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

java.lang.SecurityException AWSCredentialsProvider 签名者信息不匹配

我正在使用 2 个 Amazon 提供的库:redshift-jdbc42-1.2.27.1051aws-java-sdk-core-1.11.600. AWSCredentialsProvider这两个库都在 package 下定义了一个类com.amazonaws.auth。当我尝试使用我的应用程序时,出现以下异常:

Caused by: java.lang.SecurityException: class "com.amazonaws.auth.AWSCredentialsProvider"'s signer information does not match signer information of other classes in the same package

我不知道如何解决这个问题。任何帮助,将不胜感激!

java aws-sdk

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

如何在 Docker 容器中获得一致的执行时间

我正在使用 Docker 来隔离特定进程。该过程在多核虚拟机上重复运行多次。

每个执行时间都通过其挂钟时间来测量并记录。我希望时间差小于 200 毫秒。不幸的是,我发现 Docker 中最佳执行和最差执行之间大约有 1 秒的差异。我不明白为什么。我想将其降低到 < 200 毫秒。

这是一个图表来说明我的问题: 在此输入图像描述

这里,蓝色列代表以毫秒为单位的本机执行时间,这非常一致,而橙色列则显示相同代码作为 Docker 进程运行时的执行时间。

我的目标是在 Docker 中获得一致的执行时间。

这是我的最小可重现示例:

mem.cpp该程序执行内存昂贵的操作需要时间。

#include <bits/stdc++.h>
#include <vector>

using namespace std;
string CustomString(int len)
{
    string result = "";
    for (int i = 0; i<len; i++)
        result = result + 'm';

    return result;
}
int main()
{
   int len = 320;
   std::vector< string > arr;
   for (int i = 0; i < 100000; i++) {
       string s = CustomString(len);
       arr.push_back(s);
   } …
Run Code Online (Sandbox Code Playgroud)

docker docker-engine

5
推荐指数
0
解决办法
204
查看次数

将bash中变量中的多行字符串转换为带有换行符转义的单行字符串

我正在寻找一种方法,将 bash 变量中的多行字符串转换为单行字符串,其中每个\n字符都转义为\n文字。

例如:

str="
Hello
World
"
Run Code Online (Sandbox Code Playgroud)

我需要这个才能成为Hello\nWorld。我浏览了 SO 和 Unix StackExchange 上的问题,但我还没有找到可以实现我需要的命令。

bash

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

在 Kotlin 中解析带逗号的数字

在 Kotlin 中,有一个Int从 a解析 an 的快捷方式String

"10".toInt()
Run Code Online (Sandbox Code Playgroud)

但是,如果数字内部有逗号,例如"1,000".toInt(),则会抛出NumberFormatException。我知道我可以在 Java 中使用NumberFormatandLocale来解析数字。不过,我想知道 Kotlin 中是否有一个快捷版本。

kotlin

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