测试不存在的代码

Test the code that doesn't exist

TDD 声称我应该先编写测试。假设我想编写一个服务,如果我还没有任何东西,我该如何开始为该服务编写测试呢?第一个测试是什么?尝试实例化服务并获得异常?

PHP Laravel 范例:

class ServiceTest extends TestCase
{
    public function testServiceExists()
    {
        $service = App::make('grid');
    }
}

结果:

PHPUnit 5.5.4 by Sebastian Bergmann and contributors.

E 1 / 1 (100%)

Time: 123 ms, Memory: 14.00MB

There was 1 error:

1) ServiceTest::testServiceExists ReflectionException: Class grid does not exist

/home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:749 /home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:644 /home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:709 /home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:237 /home/supertrall/domains/md.local/laravel/tests/Grid/ServiceTest.php:20

ERRORS! Tests: 1, Assertions: 0, Errors: 1.

你走对了!

TDD 是一种方法论。它需要一套规则,其中之一是red, green, refactor。就是先写测试,通过再重构代码。

  • “红色”- 写入失败测试
  • ‘绿色’——测试通过
  • “重构”——清理你的代码

是的,class 应该存在也可以是一个测试!

关于以下位置的一些信息:

遇到这样的错误在 TDD 中是一件好事。这意味着您需要解决错误才能遇到另一个错误。

在 TDD 中编码时,您按 wishful thinking 编程。换句话说,您在实现组件本身之前编写了一些使用组件的代码。这有助于发现您需要的功能和数据,并且遵循这一发现将使您获得更简单和有用的 API。

尽管 TDD 概念并不难学,但习惯 TDD 的测试先行开发方法既困难又耗时。您走在正确的轨道上,只需阅读更多内容并进行更多测试即可熟悉该方法。