角形 HttpClient“解析过程中 Http 失败”

如果我从我的后端返回一个空数组,它工作... 所以 Angular 试图解析我的响应为 JSON?我怎么才能解除这个?

除了这里所有其他出色的答案之外,我还想补充几个例子。

如果您得到一个 NPE 并且它指向这一行,那么 repositorysomeObject中的哪一个是空的?

如果创建自己的异常,则可以添加消息

相反,在获取这些变量时检查它们将至少指向一行,在这一行中,它们可能是唯一被处理的变量。如前所述,如果您的错误消息包含变量名或类似的名称,那就更好了。

如果你抛出你自己的 NullPointerException,你可以添加一个消息(你肯定应该!)

处理大量输入时的错误应提供识别信息

默认消息是来自 new NullPointerException()null和所有使用它的方法,例如 Objects.requireNonNull。如果你输出 null 它甚至可以转换成一个空字符串..。

假设您的程序正在处理一个包含数千行的输入文件,突然出现一个 NullPointerException。你看看这个地方,发现有些输入不正确... 什么输入?您将需要关于行号、列甚至整个行文本的更多信息,以了解该文件中的哪一行需要修复。

289308 次浏览

有关更多信息,请参见 医生

如果你有选择的话

return this.http.post(`${this.endpoint}/account/login`,payload, { ...options, responseType: 'text' })
docker run命令,这让我有点困惑。

docker run -itd ubuntu:xenial /bin/bash

我正在做一些复杂的东西与码头,但作为结果,我不知道什么 -it标志的意思。 最近我遇到了一些 docker run命令的例子,这让我有点困惑。

docker run -itd ubuntu:xenial /bin/bash

我的问题是,如果容器在实例化期间运行 bin/bash,那么在这里编写 -it标志有什么意义

我的问题是,如果容器在实例化期间运行 bin/bash,那么在这里编写 -it标志有什么意义

在文档中我们有一个例子

docker run --name test -it debian

在文档中我们有一个例子

docker run --name test -it debian

解释一下

解释一下

它指示 Docker 分配一个连接到

它指示 Docker 分配一个连接到 控件中创建交互式 bash shell 控件中创建交互式 bash shell 集装箱。

集装箱。

以及帮助页中 -t标志的说明

以及帮助页中 -t标志的说明

分配一个伪 TTY

分配一个伪 TTY

如果我删除 -it标志

docker run -d ubuntu:xenial /bin/bash

如果我删除 -it标志

docker run -d ubuntu:xenial /bin/bash

我的新容器活不了多久了

我的新容器活不了多久了

docker ps -a

docker ps -a

它被指定为出口

它被指定为出口

对不起,如果我的问题相当愚蠢,我无法在互联网上找到解释(我有重大的误解这一点)。

因为如果您将其转换为 text 但后端请求 json,它将返回一个错误..。

因此您可以在容器中执行 lsmkdir或任何 bash 命令。

docker run -it ubuntu:xenial /bin/bash以交互模式(因此是 -it标志)启动容器,允许您与容器的 /bin/bash进行交互。这意味着现在您将拥有 bash会话 在里面容器,因此您可以在容器中执行 lsmkdir或任何 bash 命令。

这里的关键是“互动”这个词。如果省略该标志,容器仍将执行 /bin/bash,但会立即退出。对于标志,容器执行 /bin/bash,然后耐心地等待您的输入。

因此,在 更新到最新的火箭聊天之后,我能够使用上面提到的 REST API。

我觉得这是一个非常常见的用例,不确定如何正确地输入它。

你可以使用类型转换,你的 test.ts应该是这样的:

import * as dep from '../dependency';
jest.mock('../dependency');


const mockedDependency = <jest.Mock<typeof dep.default>>dep.default;


it('should do what I need', () => {
//this throws ts error
// Property mockReturnValueOnce does not exist on type (name: string)....
mockedDependency.mockReturnValueOnce('return');
});
少女;

TS 传送器不知道 jest.mock('../dependency');改变 dep的类型,因此您必须使用类型转换。由于导入的 dep不是类型定义,所以必须使用 typeof dep.default获取它的类型。

Mock (’./SomClass’) ;

下面是我在使用 Jest 和 TS 时发现的一些其他有用的模式

Const mockedClass = < jest. Mock < SomeClass > > SomeClass;

如果导入的元素是一个类,那么你就不必使用 typeof,例如:

import { SomeClass } from './SomeClass';


jest.mock('./SomeClass');


const mockedClass = <jest.Mock<SomeClass>>SomeClass;

当您必须模拟某些节点本机模块时,此解决方案也很有用:

import { existsSync } from 'fs';


jest.mock('fs');


const mockedExistsSync = <jest.Mock<typeof existsSync>>existsSync;

当您必须模拟某些节点本机模块时,此解决方案也很有用:

import { existsSync } from 'fs';


jest.mock('fs');


const mockedExistsSync = <jest.Mock<typeof existsSync>>existsSync;

如果您不想使用 jest 自动模拟,而更喜欢创建手动模拟

import TestedClass from './TestedClass';
import TestedClassDependency from './TestedClassDependency';


const testedClassDependencyMock = jest.fn<TestedClassDependency>(() => ({
// implementation
}));


it('Should throw an error when calling playSomethingCool', () => {
const testedClass = new TestedClass(testedClassDependencyMock());
});

如果您不想使用 jest 自动模拟,而更喜欢创建手动模拟

import TestedClass from './TestedClass';
import TestedClassDependency from './TestedClassDependency';


const testedClassDependencyMock = jest.fn<TestedClassDependency>(() => ({
// implementation
}));


it('Should throw an error when calling playSomethingCool', () => {
const testedClass = new TestedClass(testedClassDependencyMock());
});

testedClassDependencyMock()创建模拟对象实例

testedClassDependencyMock()创建模拟对象实例 TestedClassDependency可以是类、类型或接口

}); });

我在 @types/jest中发现了这个:

/**
* Wrap a function with mock definitions
*
* @example
*
*  import { myFunction } from "./library";
*  jest.mock("./library");
*
*  const mockMyFunction = myFunction as jest.MockedFunction<typeof myFunction>;
*  expect(mockMyFunction.mock.calls[0][0]).toBe(42);
*/

下面是模拟非默认类及其静态方法的方法:

jest.mock('../src/to/the/OAuth', () => ({
OAuth: class {
public static getOAuthService() {
return {
getAuthorizationUrl() {
return '';
}
};
}
}
}));

这里应该有一些类型转换,从类的类型到 jest.MockedClass或类似的东西。但结果总是出错。所以我就直接用了,而且成功了。

test('Some test', () => {
OAuth.isLogIn = jest.fn().mockImplementationOnce(() => {
return false;
});
});

但是,如果它是一个函数,您可以模拟它并进行类型对话。

jest.mock('../src/to/the/Conference', () => ({
conferenceSuccessDataBuild: jest.fn(),
conferenceLoginBuild: jest.fn()
}));
const mockedConferenceLoginBuild = conferenceLoginBuild as
jest.MockedFunction<
typeof conferenceLoginBuild
>;
const mockedConferenceSuccessDataBuild = conferenceSuccessDataBuild as
jest.MockedFunction<
typeof conferenceSuccessDataBuild
>;
  • 没有使用 typeof关键字的复杂铸造,
  • 没有像 mocked那样的额外依赖。
  • Artur Górski 的顶级解决方案不适用于最后的 TS 和 Jest。

    在我的例子中,问题是 url 调用中缺少“/”,就在资源之后。然后它尝试获取角组件(html)而不是 JSON 资源。我希望这有所帮助,因为我没有在这个帖子中找到我的问题的答案。

    布尔值 | 未定义; }’

    从 Jest 24.9.0开始,这里介绍了如何模拟和正确输入 Class/Object/function 和 Jest 属性。

    开玩笑的

    如您所见,您可以手动强制转换所需的内容,或者需要遍历所有 的属性/方法来输入/强制转换所有内容。

    开玩笑,嘲笑班

    为此(深度模拟类型)可以使用 Jest 27.4.0中引入的 开玩笑的

    import foo from 'foo';
    jest.mock('foo');
    
    
    const mockedFoo = jest.mocked(foo, true);
    
    
    mockedFoo.mockImplementation() // correctly typed
    mockedFoo.getSomething.mockImplementation() // also correctly typed
    
    })

    然后,无论何时调用 add 方法,它都会执行上面的代码,而不是将其推送到队列,在本例中是这样的。

    我移除了 <br/>一切正常。

    在 C 和 C + + 中,π 这个数字有一个相当愚蠢的问题。据我所知,math.h中定义的 M_PI并不是任何标准所要求的。

    复杂数学的标准库-双曲函数,std::hermitestd::cyl_bessel_i,不同的随机数生成器等等。

    新的 C + + 标准在标准库中引入了许多复杂的数学问题——双曲函数、 std::hermitestd::cyl_bessel_i、不同的随机数生成器等等。

    有没有任何“新”标准为 π 带来了一个常数?如果不是,为什么?没有它,这些复杂的数学怎么算?

    有没有任何“新”标准为 π 带来了一个常数?如果不是,为什么?没有它,这些复杂的数学怎么算?

    我知道 C + + 中关于 π 的类似问题(它们已经有好几年的历史了,标准也已经过时了) ; 我想知道问题的当前状态。

    我知道 C + + 中关于 π 的类似问题(它们已经有好几年的历史了,标准也已经过时了) ; 我想知道问题的当前状态。

    我对 为什么,为什么 C + + 也很感兴趣,它仍然没有 π 常数,但是有很多更复杂的数学。

    我对 为什么,为什么 C + + 也很感兴趣,它仍然没有 π 常数,但是有很多更复杂的数学。

    我知道我可以把 π 定义为 4*atan(1)acos(-1)double pi = 3.14;。当然。但为什么我还是要这么做?没有圆周率,标准数学函数是如何工作的?