crysalead/kahlan

This package is abandoned and no longer maintained. The author suggests using the kahlan/kahlan package instead.

The PHP Test Framework for Freedom, Truth and Justice.

Maintainers

👁 jails

Package info

github.com/crysalead/kahlan

Issues

pkg:composer/crysalead/kahlan

Statistics

Installs: 60 821

Dependents: 26

Suggesters: 0

Stars: 1 095

5.2.0 2022-01-16 15:26 UTC

Requires

  • php: >=7.1

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT ff2449502f2ae9ee48d3555ce5d285505ab6375b

  • CrysaLEAD

testingunit testBDDTDDmockstubBehavior-Driven DevelopmentMonkey Patching

This package is not auto-updated.

Last update: 2022-02-01 12:44:15 UTC


README

👁 Kahlan

👁 Build Status
👁 License

👁 Latest Stable Version
👁 Total Downloads
👁 Code Coverage

Kahlan is a full-featured Unit & BDD test framework a la RSpec/JSpec which uses a describe-it syntax and moves testing in PHP one step forward.

Kahlan lets you stub or monkey patch your code directly like in Ruby or JavaScript without any required PECL-extensions.

Videos

IRC

chat.freenode.net (server) #kahlan (channel)

Documentation

See the full documentation here

Requirements

  • PHP 7.1+
  • Composer
  • phpdbg or Xdebug (only required for code coverage analysis)

Main Features

  • RSpec/JSpec syntax
  • Code Coverage metrics (xdebug or phpdbg required)
  • Handy stubbing system (mockery or prophecy are no longer needed)
  • Set stubs on your class methods directly (i.e allows dynamic mocking)
  • Ability to Monkey Patch your code (i.e. allows replacement of core functions/classes on the fly)
  • Check called methods on your classes/instances
  • Built-in Reporters (Terminal or HTML reporting through istanbul or lcov)
  • Built-in Exporters (Coveralls, Code Climate, Scrutinizer, Clover)
  • Extensible, customizable workflow

Syntax

<?php

describe("Example", function() {

 it("makes an expectation", function() {

 expect(true)->toBe(true);

 });

 it("expects methods to be called", function() {

 $user = new User();
 expect($user)->toReceive('save')->with(['validates' => false]);
 $user->save(['validates' => false]);

 });

 it("stubs a function", function() {

 allow('time')->toBeCalled()->andReturn(123);
 $user = new User();
 expect($user->save())->toBe(true)
 expect($user->created)->toBe(123);

 });

 it("stubs a class", function() {

 allow('PDO')->toReceive('prepare', 'fetchAll')->andReturn([['name' => 'bob']]);
 $user = new User();
 expect($user->all())->toBe([['name' => 'bob']]);

 });

});

Screenshots

Example of default reporting:

👁 dot_reporter

Example of verbose reporting:

👁 verbose_reporter

Example of code coverage on a specific scope:

👁 code_coverage

Installation

via Composer

$ composer require --dev kahlan/kahlan

Note: Kahlan uses the Semantic Versioning and maintains a CHANGELOG to help you easily understand what's happening.

via Git clone

git clone git://github.com/kahlan/kahlan.git
cd kahlan
composer install
bin/kahlan # to run specs or,
bin/kahlan --coverage=4 # to run specs with coverage info for namespaces, classes & methods (require xdebug)