gpt4 book ai didi

tdd - 我应该只在 BDD 中测试公共(public)接口(interface)吗? (一般来说,特别是在 Ruby 中)

转载 作者:行者123 更新时间:2023-12-04 16:56:20 27 4
gpt4 key购买 nike

我正在阅读(仍然是测试版)rspec book by the prag progs因为我对对象的行为测试感兴趣。从我迄今为止收集到的信息(警告:仅阅读 30 分钟后),基本思想是我希望确保我的对象在“外部”(即在其输出中以及与其他对象的关系中)表现出预期的行为。

那么我是否应该只是对我的对象进行黑盒测试以确保与其他对象的正确输出/交互?

这可能是完全错误的,但考虑到我的对象在系统中的行为方式,这似乎是一个人会采取的意识形态。如果是这样,我们如何专注于对象的实现?我如何测试我的私有(private)方法是否正在为所有不同类型的输入做我希望它做的事情?

我想这个问题可能对所有类型的测试都有效??我对 TDD 和 BDD 还是很陌生。

最佳答案

如果您想更好地理解 BDD,请尝试在不使用“测试”一词的情况下考虑它。

您将编写一个如何使用您的类的示例,而不是编写测试(除非通过公共(public)方法,否则您不能使用它)。您将展示为什么您的类(class)对其他类(class)很有值(value)。您正在定义类(class)职责的范围,同时显示(通过模拟)在其他地方委派了哪些职责。

同时,您可以质疑职责是否合适,并调整您的类上的方法,使其尽可能直观可用。您正在寻找易于理解和使用的代码,而不是易于编写的代码。

如果您可以从示例的角度思考并通过行为提供值(value),那么您将创建易于使用的代码,以及其他人可以遵循的示例和描述。您将使您的代码安全且易于更改。如果你考虑测试,你会把它固定下来,这样没有人可以破坏它。你会很难改变。

如果它足够复杂以至于您确实想单独测试内部方法,请将它们分解为另一个类,然后说明为什么该类很有值(value)以及它对使用它的类做了什么。

希望这可以帮助!

关于tdd - 我应该只在 BDD 中测试公共(public)接口(interface)吗? (一般来说,特别是在 Ruby 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3635655/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com