我在课堂上有以下方法:
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,因为我打电话data上null或undefined对象。我花了至少2个小时的时间尝试各种方法来使此工作正常进行,但是我找不到能够模拟axios.get一些返回值的方法。
Jest的文档使用JavaScript,因此他们给出了这个示例,axios.get.mockResolvedValue(resp)但我不能调用,mockResolvedValue因为axios.getTypeScript 中不存在该方法。
另外,如果您知道除Jest之外的React的其他优秀测试库,这些库很容易为TypeScript做到这一点,请随时共享。
我正在使用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?
最后:
我决定直接使用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的人来说很重要.
我想知道如何永久删除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:
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意味着该模块可以安装在更广泛的机器上,这是一件好事吗?
我正在使用 2 个 Amazon 提供的库:redshift-jdbc42-1.2.27.1051和aws-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
我不知道如何解决这个问题。任何帮助,将不胜感激!
我正在使用 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) 我正在寻找一种方法,将 bash 变量中的多行字符串转换为单行字符串,其中每个\n字符都转义为\n文字。
例如:
str="
Hello
World
"
Run Code Online (Sandbox Code Playgroud)
我需要这个才能成为Hello\nWorld。我浏览了 SO 和 Unix StackExchange 上的问题,但我还没有找到可以实现我需要的命令。
在 Kotlin 中,有一个Int从 a解析 an 的快捷方式String:
"10".toInt()
Run Code Online (Sandbox Code Playgroud)
但是,如果数字内部有逗号,例如"1,000".toInt(),则会抛出NumberFormatException。我知道我可以在 Java 中使用NumberFormatandLocale来解析数字。不过,我想知道 Kotlin 中是否有一个快捷版本。