- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我正在用 Rspec 为 Rails 应用程序编写规范,并且我正在删除一些方法来减少规范中的依赖项数量:
# specs/account_statistics_spec.rb
describe AccountStatistics do
it "gets the percentage of users that are active in an account" do
account = Account.new()
account.stub_chain(:users, :size).and_return(80)
account.stub_chain(:users, :active, :size).and_return(20)
stats = AccountStatistics.new(account)
stats.percentage_active.should == 25
end
end
现在即使 Account#users
和 User#active
方法没有在它们各自的类中定义,AccountStatistics 规范也可以通过。
有哪些好的方法可以捕捉 stub 方法可能无法实现的事实?是否应该留给集成测试来捕获未定义的方法?或者规范还应该在 stub 之前检查方法是否已定义?
如果有人可以链接到任何深入讨论 stubbing 和 mocking 的好书/演示文稿,那就太好了 :)
最佳答案
要解决您的具体问题,请查看 https://github.com/xaviershay/rspec-fire防止 stub 不存在的方法。
我认为这里更广泛的问题是您没有听取尝试编写此测试给您的反馈。难以编写的测试是测试主题设计不佳或您使用的测试技术不合适的好兆头。
如果这个类确实遵循 Demeter 法则(很难处理 ActiveModel 关系),它会是什么样子?如果您提供一个测试替身对象而不是尝试模拟每个方法,您的测试会是什么样子?作为集成测试,您的测试会是什么样子?
我认为编写更好测试的最佳资源是查看被测试代码的设计。 http://www.poodr.com/可能是一个很好的资源。 http://www.martinfowler.com/bliki/TestDouble.html很好地概述了您在 http://blakesmith.me/2012/02/29/test-stubbing-as-an-antipattern.html 时可能不会考虑的测试替身争论为什么模拟可能完全是错误的工具。具体到 rspec http://betterspecs.org给出了一些好的规范可能看起来的结果。如果这些很难写,那就是一个很好的暗示,表明存在更广泛的问题。
关于ruby-on-rails - 在 TDD 中 stub 依赖有哪些好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057111/
我有以下 Spring 代码要使用 Spock 进行测试: @Service @RequiredArgsConstructor public class MyService { private f
package main import ( "fmt" "github.com/hyperledger/fabric/core/chaincode/shim" pb "gith
我刚开始使用Wiremock,但对 stub 有疑问。 从文档看来,您似乎可以在映射下使用JSON文件,也可以在Java代码中使用代码stubFor(get(urlEqualTo(...。但是,我发现
我有以下要测试的对象: public class MyObject { @Inject Downloader downloader; public List readFi
我看到它被使用过很多次,但从未真正停下来质疑过它。现在我想知道 stub 和 stub 之间是否有区别! 有吗?还是历史原因? stub !意思是它 stub 一次?并返回到正常的方法调用? 最佳答案
在 Jasmine 中,如何创建一个纯 stub ,其中所有方法都已 stub 并返回未定义? 最佳答案 我认为没有任何现成的东西可以做到这一点,但您可以创建自己的。 describe('Stub a
两个类。父级:B。子级:A。A.method1() 覆盖 B 的。 public class B { protected boolean method1(){...}; } public cl
我有一个函数依赖于另一个函数,而不是测试依赖性我只想测试该依赖函数的特定结果。但是,当我对函数进行 stub 时,什么也没有发生,返回结果就好像我一开始就没有对函数进行 stub 一样。 示例代码:
这是要测试的代码: const AWS = require('aws-sdk'); const { APPLICATIONS, NOTIFICATION_FREQUENCIES } = req
背景 Any client socket program(C) over TCP/IP looks like, /* Socket creation */ sockfd = socket(AF_I
我正在尝试使用 stub 提供程序(我从 this 问题的答案中得到)和 stub 验证器来实现一个简单的同步适配器。对于身份验证,我使用了基本的 sync adapter example由谷歌提供。
与在测试点使用模拟框架(如 Rhino Mocks)相比,是否存在手动创建 stub 类型更有利的情况。 我们在项目中采用了这两种方法。当我查看一长串对象的 stub 版本时,我的直觉是它会增加维护开
我想 stub doSomething 来回调错误。但是,我只希望它在第一次响应时回调并出现错误。我想在第一次调用后恢复 stub 为了 stub 第一个调用,我可以这样做: var stub = s
我有一个 TimeMachine 类,它为我提供当前日期/时间值。该类看起来像这样: public class TimeMachine { public virtual DateTime Ge
如果我有一个 Rhino Mock 对象,它已经像这样声明了一个 stub 调用: mockEmploymentService.Stub(x => x.GetEmployment(999)).Retu
通常使用 Mockito,如果你 stub 一个被多次调用的方法,你会这样做 Mockito .doReturn(0) .doReturn(1) .doReturn(2)
逻辑 public class Logic { String date = (LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy
我想达到的目的 At the time of compilation, the compiler knew the function call was valid because you includ
这可能是一个简单的问题,但我无法缩短它。 我正在测试我的一个类,ClassToTest。在生产中,它将对第三方库对象(ThirdPartyClass 的实例)执行操作。 我想用 stub 模拟那个类。
我是 js 单元测试的新手,对使用 withArgs 进行 stub 有疑问。 我有一些名为“create”的通用外部函数,我只想为某种参数和原始“create”的其他返回值 stub 它。例如: s
我是一名优秀的程序员,十分优秀!