Nec*_*oft 7 postgresql unit-test design-pattern
我希望引入一种测试驱动的设计风格来为 postgresql 数据库实现编写我的存储过程。
我已经看到pgTap是一个流行的 postgres 单元测试工具,并且正确地允许测试用 SQL 编写,而不是在外部构建和运行。
为了走得更远,我还希望能够使用测试替身(存根、模拟、假、虚拟),甚至可能使用一些 IDE 支持运行和重构(类似于tsql)
当前是否有专门用于在 postgres 中支持 TDD 的工具和资源,或者人们是否通过构建假表和数据并将所有内容包装在完成时回滚的事务中来推出自己的工具和资源?
目前在 postgres 中接近 TDD 的最佳实践是什么?
测试驱动开发(TDD)是一种意识形态。你通常可以在实现中找出漏洞;通常,在 TDD 的任何实现中你都会牺牲便利性和效率——这就是你必须出售它的原因,也是它不直观的原因。您遇到了一个问题,这是测试的终点站之一。你可能想成为一个纯粹主义者,而人们常常在这种追求中迷失在树林中。
创建网站时,通常不会测试框架是否生成有效的 HTTP 响应。这样的测试位于不同的层,您应该只使用具有严格的测试套件来测试其自己的领域的框架和库。您为测试有效 HTTP 响应所做的任何事情都应该出现在端到端测试中(使用Protractor之类的东西)。
将 PostgreSQL 视为管理数据的较低级别的“框架”。您需要测试如何将东西放入和取出。PgTAP 所做的大部分事情绝对是矫枉过正。大量工作都在验证模式——这如何与 TDD 一起工作?拿..
CREATE TABLE foo ( a int PRIMARY KEY, b text, c uuid );
Run Code Online (Sandbox Code Playgroud)
你要测试
foo退出并且是一个表a是一个整数b是一个文本字段c是一个uuid所有这些都经过充分测试的结果,
CREATE TABLE foo ( a int PRIMARY KEY, b text, c uuid );
Run Code Online (Sandbox Code Playgroud)
测试它会让你自己发疯。如果您需要验证两个模式是否相同,您可以简单地pg_dump --schema比较两者。您实际上可以轻松地生成一个完整的模式测试套件来测试所有内容。
至于您需要测试的内容:数据库中的任何程序代码。通常,我们会像 PostgreSQL 一样使用测试数据来完成此操作,或者只需拥有一个测试数据库,您的框架可以连接到该数据库并像其他所有东西一样测试过程代码。
害羞的是,您需要胖模型,瘦控制器(在模型中放入尽可能多的数据操作逻辑),这样您就可以在网络应用程序之外使用它,并且应该像其他任何您喜欢的语言一样进行测试。
| 归档时间: |
|
| 查看次数: |
990 次 |
| 最近记录: |