问题标签 [dart-mock]

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 投票
1 回答
610 浏览

mocking - 用 Dart 模拟

我一直在尝试了解 dart 中的模拟库,但似乎我仍然没有得到它。

在我的库中,我有一个对外部资源的 HTTP 请求,我想模拟它以不一直依赖外部资源。

我的库中的主类如下所示:

所以我已经准备好我的班级接收 http.client 作为参数,因为这是我想模拟的。

所以在我创建的单元测试文件中:

在我的单元测试中,我完成了:

然后,我希望每次从我的库中调用“send”时,它已在我的单元测试中使用可选的“httpClient”实例化,它会返回“这是一个测试”。我很确定我在这里遗漏了一些非常大的东西,但不能完全确定是什么。

任何帮助表示赞赏。

0 投票
4 回答
4808 浏览

mocking - 使用 Dart 模拟 HTTP 响应

我一直在研究新的 API 包装器,并且不想在每次运行单元测试时都调用 API。因此,如此处所述,我在嘲笑它。

我最初认为我嘲笑它的方式有问题,但似乎问题出在其他地方。

我想要完成的事情非常简单。当我的单元测试运行时,我想返回一个值,就好像我已经出去从我正在集成的外部 API 中获取信息一样。

我使用 http.Client 作为可选参数来初始化我的类,因此我可以在单元测试运行时将其传入:

在我的单元测试中,我创建了以下模拟类:

在我的单元测试中检查响应我正在执行以下操作:

所以,正如你所看到的,我正在努力做到这一点,所以调用 send 返回message401,这只是一个JSON字符串。

这没有发生,因为message401它是一个字符串,并且因为我的代码试图将它用作 Future,所以我总是得到错误:

顶级未捕获错误:类“String”没有实例方法“then”。

我完全理解为什么会出现此错误,但不知道如何解决它。

任何帮助表示赞赏。

0 投票
3 回答
7283 浏览

dart - 如何为包含子字符串的字符串创建匹配器,同时忽略大小写

我正在使用 mockito 编写一个单元测试来模拟依赖项并检查我们是否使用正确的参数调用它。我们应该传入一个字符串,所以我试图匹配该函数参数,但不断言整个字符串,以防我们更改措辞。所以我只想匹配消息中的一个单词,但那个单词可能在句子的开头或中间,所以它可能以大写字母开头。

飞镖匹配器具有equalsIgnoringCasecontains,但我找不到任何可以同时处理两者的匹配器,例如 containsIgnoringCase。有没有办法检查子字符串,同时也忽略匹配器中的大小写?

0 投票
0 回答
164 浏览

mockito - Flutter Stubbing:使用 Stub 方法的返回值属性

嗨,这是我想要存根的方法:checkLimit 方法。

这是我的测试

通过 if 条件返回的数据应该是什么?谢谢

0 投票
1 回答
98 浏览

dart - 如何在 Dart 中返回这种疯狂的类型?

我试图模拟 mongo_dart 中的 .find 函数,它要求一个我无法解决的返回函数。它有一个类型,然后是另一个类型,然后是名称。什么/如何表达这个返回类型。

这显然是合法的代码:

返回 aStream<Map<String, dynamic>>会引发错误 - 它说它需要 aStream<Map<String, dynamic>> Function([selector])

帮助!我从来没有见过这样的东西,谷歌也没有多大帮助。


编辑,感谢 Irn 在下面的评论,最终解决方案是这段代码。查看他们的回答和我为澄清而发表的评论

0 投票
1 回答
540 浏览

dart - Dart 中的模拟 http.Client 给出异常

我在测试发出 http 请求的类时遇到问题。我想模拟客户端,以便每次客户端发出请求时,我都可以用模拟响应来回答。目前我的代码如下所示:

但是,当我运行测试时,出现以下异常: type '_FunctionType' is not a subtype of type '(Request) => Future<Response>' in type cast test/data_retrieval/sources/fitbit_test.dart 26:32 main

根据 Flutter/Dart Mockito 应该这样使用:

在示例中,客户端是在没有参数的情况下模拟的,但我想这已经改变了,因为 MockClient 的文档现在也接受了一个参数。我不知道为什么会发生此异常,并且在 Internet 上找不到任何内容,所以我想知道这里是否有人知道为什么会发生此异常。