- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在阅读单元测试& Clean architecture并尝试实现涉及这两件事的东西。
据我了解,Clean 架构的结构使得可以对 Interactor 对象的方法进行单元测试。
但是当用例类似于“创建一个文件,其内容是根据某种格式的某些数据计算出来的”时,我会感到困惑,因为它不是单一的(文件内容的计算和文件的创建,它们都在 用例中)
这里有一些伪代码说明了我的情况:
/* We are in an Interactor (i.e. UseCaseObject)
* This method 1)computes fileContent and 2)writes it into a file.
*/
public void CreateFileFromData(someDataInSomeFormat) {
var parsedData = SomeParser.Parse(someDataInSomeFormat);
string fileContent = ???;
WriteFile(fileContent);
}
我的问题如下:
最佳答案
您没有说明用于计算的数据将从何处“加载”,但举例来说,假设数据将从另一个文件中读取。
您的交互器将具有三个依赖项
- 读取文件
- 计算新文件的数据
- 写入文件
public class Interactor
{
public Interactor(IReader reader, ICalculator calculator, IWriter writer)
{ }
public void DoJob()
{
var data = reader.Read();
var calculatedData = calculator.Calculate(data);
writer.Write(calculatedData);
}
}
通过这种方法,Interactor
将负责“组合”完成任务所需的步骤。
您可以通过模拟所有依赖项来简单地测试 Interactor。
地点:IReader
和 IWriter
是网关ICalculator
是 UseCase 的实现细节,由 Interactor
Must a method defined in the Interactor be unitary ? (as in, do only one thing)
方法应该做一件事——执行与用例相关的任务。如果任务需要使用网关(外部资源)或任务过于复杂以将其保持在一种方法中 - 您将引入所有必需的单元作为依赖项,交互者的责任是将它们“粘合”在一起。
Must a method defined in the Interactor be unit-tested ? (I see a function, unitary or not, as a testable unit, please correct me if this is incorrect)
仅抽象网关(外部资源)- 然后您可以测试交互器的整个逻辑。如果您首先编写测试 - 您将编写测试并且整个逻辑可以在一个函数中(它可能/应该是丑陋的意大利面条代码,这使得测试通过)。然后,当您看到实现的全貌时,您可以通过将事情转移到专门的类(class)来开始调动员工。
Which class must hold the computation of fileContent in a Clean architecture ?
可以是interactor,如果是简单的一行计算。但我更喜欢引入专门的计算类并将其作为依赖项引入。虽然测试将保留在交互器中,但专用计算类将通过交互器测试进行测试
关于unit-testing - 测试在 Clean 架构中做不止一件事的 Interactor 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49356126/
在VIPER设计模式,Interactor 应该返回可能被多个演示者操作使用的所有信息,还是我应该为每个演示者设置一个单独的结构? 在我的例子中,我有一张显示地点的 map 。要显示这些地点,我需要从
我最近偶然发现了 Clean Architecture ,作者 Bob 叔叔,我很想知道交互器是否可以执行其他交互器。 例如,这些是我目前的交互器:getEmptyAlbums、getOtherAlb
什么是交互器?它如何适应 MVP 设计?使用交互器与将交互器代码放在演示器中的优点/缺点是什么? 最佳答案 在撰写本文时(2016 年),许多项目都是使用不良版本的 MVC 模式编写的。 Activi
开发者好,我很难弄清楚我应该如何正确地做些什么,这样我才不会违反 MVP 原则,所以我遇到了以下情况。 显示对象列表的 View ,当单击特定对象时,我的 ViewHolder 会告诉 Present
我一直在研究 Clean Architecture和 VIPER . 昨天有 friend 问我为什么不把Interactor服务器上的逻辑,只需将处理后的数据同步到 iOS 客户端,而不是在 Int
我正在阅读有关 VIPER 的文章,我的理解是 - 通常一个 viewController 与一个演示者相关,而一个演示者与一个交互器对话。 但是,如果我们有主从页面或列表详细信息页面怎么办。要显示项
我使用 Docker 在 Windows 中安装了 Graphileon。在 Graphileon InterActor 中,可以使用 Cypher 添加和删除用户。但是,当我想切换数据库并为 neo
我一直在阅读单元测试& Clean architecture并尝试实现涉及这两件事的东西。 据我了解,Clean 架构的结构使得可以对 Interactor 对象的方法进行单元测试。 但是当用例类似于
我确实有几个问题。使用交互器的最佳方式是什么: 假设我在交互器中保存了一些数据,但我想检查这些数据并显示下一个警报: self.presenter?.showAlert(with: "All fiel
我正在使用 MVP 和 RxJava 开发 Android 应用程序。好吧,我有一个疑问: 当我创建演示者和交互器时,我可以将调度程序放入演示者中,如下所示: Presenter 中的调度程序 主持人
Spark - 如何使用以下方法获取逻辑/物理查询执行 通过节俭 通过 SparkInteractor 最佳答案 您可以通过 thrift 在直线中使用带有查询的解释语句,如下所示。 EXPLAIN
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 11 个月前关闭。 社区在 6 个月前
我真的不明白 之间的区别用例交互器 和一个 服务在清洁架构中。域服务只是“用例交互器方法”的集合吗? 我想在我的 ASP.net Core 应用程序中实现干净的架构,但我不确定我是否应该以“用例交互器
我在Android Mobile应用程序中使用Liferay屏幕以及Liferay Android Mobile SDK。 我已将LoginScreenlet放入我的 Activity 中。它显示正确
我有一个基于 MVP + 交互器 + 存储库的 Android 应用程序。从存储库到呈现器的所有层都使用 react 流 (RxJava 2) 连接。查看向演示者请求某些内容,演示者向交互者请求,交互
使用 DDD w/Clean Architecture,我首先实例化我的所有依赖项(例如存储库和服务)并将它们注入(inject)到我的用例中。随着时间的推移,我注意到我的每个用例的依赖项列表随着时间
我是一名优秀的程序员,十分优秀!