问题标签 [ts-mockito]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
332 浏览

angular - 检查是否使用了 setter

我的服务中有一个 setter/getter

现在我使用 ts-mockito 模拟了服务,并想检查是否调用了 setter。我尝试通过实例上的 getter 检查变量,但这并没有返回我的值。

组件(FooComponent):

单元测试:

测试打印Foo Service is now: 2expect失败并带有Expected null to equal 2.

0 投票
1 回答
314 浏览

reactjs - 如何验证存储函数调用?

开始练习单元测试。

并面临这样的问题:我正在尝试测试存储方法调用。

当我运行这个测试时:

但有这样的错误

如果我像这样通过组件方法包装存储方法:

测试通过,一切都很有趣。是否有可能验证存储方法而不用组件方法包装它?

0 投票
0 回答
709 浏览

typescript - 如何在控制器中注入 ts-mockito 模拟对象

我的背景是 PHP(Laravel 基础),所以如果我不是 100% 认为 Typescript/Nodejs 应该如何工作,请原谅我。

我正在尝试测试一个控制器,supertest我的项目是使用restify和inversify for DI制作的。

使用 Mocha/Chai 和 ts-mockito 进行模拟——我的目标是拒绝一个承诺

when(mockedService.getRates(anything())).thenReject();

我的控制器具有以下构造函数:

然后进行测试:

我正在尝试用mockedService

在 Laravel 中,控制器将通过构造函数进行类型提示,或者我将$this->app['my_service'];解决绑定问题,并且在单元测试期间我可以创建一个模拟并换出。

我找不到在打字稿中实现相同目标所需的信息。请问有什么指导吗?

0 投票
0 回答
794 浏览

typescript - tsmockito - 如何模拟一个接受 lambda 参数的函数

我有一个接受 lambda 的函数(并且 lambda 也接受一个参数)。如何模拟该功能?

在下面的示例中,我试图模拟connection.xmppStanzas

示例类:

测试SomeClass

问题是when不返回节流(所以我所有的测试以确保对节做的事情都失败了)并且verify我最后真正快速地投入也失败了,证明为什么when没有返回正确的值:因为 tsmockito 无法匹配 lambda。显然,当您将参数传递给 lambda 时,它会创建一个新实例,甚至deepEqual无法处理它。

我可以这样做when(connection.xmppStanzas(anything())).thenReturn(stanzas$),但我真的想确保我的函数doSomething()正确检索 ID 并将其传递给我的匹配器。这是测试的一部分。

所以我的问题是:我如何处理模拟一个接受参数的 lambda 的函数?

0 投票
0 回答
121 浏览

angular - 如何模拟组件实例事件

我想使用ts-mockito测试从材质对话框实例dialogEvent触发的事件 () :

我如何在测试中监视或模拟它?

0 投票
1 回答
6688 浏览

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

我想通过 ts-mockito@2.5.0 创建一个类的模拟对象,但我无法正确设置它。

这是人为的测试用例:

正如测试用例所暗示的那样,我希望我的模拟返回“我被嘲笑”的返回值。

但我得到的是一个 ts-mockito-specifc 对象,其中包含以下属性:methodStubCollectionmatchersmockername.

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

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


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

0 投票
1 回答
901 浏览

javascript - 在异步函数中使用 ts-mockito 引发错误

我正在尝试使用 ts-mockito 测试 API 端点。事情进展顺利,直到我开始异步......我的测试:

服务:

到目前为止,一切正常。但是当我开始实现地理定位服务时,我不得不将它声明为一个 Promise,因为它执行的是一个 http 请求。

然后我无法再捕获抛出的错误,如果它毕竟被抛出......任何线索我应该如何捕获或抛出这个错误?提前致谢。

0 投票
1 回答
652 浏览

typescript - ts-mockito 模拟的承诺永远不会解决

鉴于这种

location.get()被调用时,then永远不会解决,即使在 60 秒超时时,拒绝似乎也有效。我究竟做错了什么?

0 投票
0 回答
260 浏览

typescript - 你能用 ts-mockito 模拟一个带有构造函数的接口吗

首先,我没有结婚,ts-mockito这正是我们正在使用的。

话虽如此,我们有一个接口,它有一个构造函数,我们想模拟并注入另一个类进行测试。这可能与ts-mockito.

无论我尝试什么,我最终都会得到模拟的输出is not constructable

这是一个可能产生错误的示例代码

有谁知道如何即时制作模拟?

0 投票
1 回答
621 浏览

angular - 确保 spyOnProperty 使用 Object.defineProperty 创建可配置属性

在升级到 Angular 9(从 8.1)和 Typescript 3.7(从 <3.6)时,我遇到了一个问题spyOnProperty

我的服务看起来像:

我在升级之前的测试将spyOnProperty

但是,我现在收到此错误:

我知道我需要Object.definePropertyas configurable: true,因为当我通过 Jasmine 时,我看到它失败了:

并且descriptordescriptor = Object.getOwnPropertyDescriptor(proto, methodName);

所以在Javascript中我想:

以确保可以监视此属性。

但是,我的问题是如何使用 Typescript 应用相同的可配置项。我试图Object.defineProperty再次运行,但我得到一个错误defineproperty Cannot redefine property,这对于为什么首先存在检查是有道理的。

我尝试使用这里configurable定义的建议装饰器:

但这不起作用,还要注意,当我在上述方法中放置断点时,descriptor.configurable实际上true在分配value. 所以我不确定究竟是什么导致了测试中的原始错误。