clear example of using PHPSpec with Laravel - php

I've scoured the net and cannot find a clear example of using PHPSpec with Laravel for specifying the behaviour of Models. I've watched the Jeffrey Way video on Laracasts, which shows how to test other classes within a Laravel project but not Models.
Examples I've found seem to differ slightly. I guess as this is still fairly new territory its not well documented. I've used Codeception for functional testing but wish to start a new project with solid unit tests.

As a beginner, you should use phpunit rather that phpspec. phpspec is quite superior, but is quite a new tool with very little documentation. Work with PHPUnit for unit testing and then move in when you feel comfortable with TDD,

Related

Is there a way to test Symfony application other than PHPUnit?

During an interview, project manager asked me the following question:
I see in your resume that you are using PHPUnit 4 for tests? Why don't
you use the built-in testing of Symfony?
I answered:
What I know is that Symfony app testing is done via PHPUnit, which is
recommended from the docs of 2.3 and 2.7. I don't know if Symfony3
comes with a testing component!
Was my answer correct? Thanks for the explanations.
Yes, you are correct. Symfony has a WebTestCase (extending the KernelTestCase where you can find that it extends PhpUnit) for functional testing. Additionally Symfony provides a PhpUnitBridge that provides helpful stuff for writing PHPUnit-Tests for a Symfony app, e.g. to make tests fail that use deprecated components. Both rely on PHPUnit and provide additional capabalities on top of "vanilla" phpunit.
There are alternative testing tools, such as phpspec for writing unit tests and Behat for higher level tests (functional and acceptance testing), but both are not used inside Symfony and therefore don't really seem to be what was being asked about.
Additional information to your answer:
In my experience, WebTestCase also bootstrap kernel as static method in all test. Due to that, is not so good to Unit testing by that tool, as this test should be fast. They design this with functional testing controllers and actions but to not need start HTTP server.
Then for:
unit testing, build-in in is not good option
functional testing, it was original intention, but i think, Behat is better solution
system testing - not so good.
Summary, that is why i don't use this tool.

Similarities and Differences Between PHPUnit and PHPSpec

I am currently doing research into which test framework I should be using for php. The two choices I have are PHPUnit and PHPSpec. I know that PHPUnit is TDD(Test driven development) and PHPSpec is BDD(Behavior driven development). However due to the lack of any real PHPSpec tutorial and limited documentation on the PHPSpec site I am unable to come to a full conclusion. My question to everyone is what are some addition similarities and differences between the two frameworks? Yes BDD and TDD are big ones but are there others? And they seem similar but no one talks about their similarities in great detail. Thank you.
PHPSpec is a SpecBDD tool more dedicated to guide you in code design rather than a testing framework.
It depends what you expect from tool and if you want to make a proper TDD/SpecBDD it's easier to use PHPSpec because it was created to help developers write readable and well designed code.
Remember that TDD/SpecBDD is not about testing all edge cases or doing whole-application-integration testing. It's about writing specifications for small units of code.
Few days ago I gave a talk on it, here you can find slides: http://www.slideshare.net/cakper/2013-0613-spug-spec-bdd-in-php I hope it will be useful to make a decision.

BDD/TDD with CodeIgniter

I recently joined a company that uses codeigniter. I have been using nodejs and rails a ton so I feel like I am missing BDD like tools (rspec/jasmine/mocha). Does PHP and/or CodeIgniter have any sort of CLI based testing suite. If so, how should I structure my app? Any good conventions that can be followed?
There's a project called CIUnit that integrates phpunit to codeigniter and provides some helpful functions, and make it a generally pleasant experience. Unfortunately the official branch is stopped at CI version 1.7.2, but there's a fork that I've been using for 2.1.2.
This gives you the usual xUnit style test suites, code coverage report generators, selenium integration, mock and stub objects and such.
Two most popular PHP BDD frameworks should work just fine with any PHP project:
Behat (StoryBDD)
PHPSpec (SpecBDD)
Today's best solution would be PHPUnit and Selenium. I wrote articles covering the usage here:
On PHPUnit: http://taiar.github.io/php/2013/11/08/testing-codeigniter-applications-with-phpunit/
On PHPUnit with Selenium: http://taiar.github.io/php/2014/04/21/acceptance-tests-on-codeigniter-with-phpunit-and-selenium/

Unit tests to develop Joomla components

I'm developing components for Joomla! and want to know if there is a framework that can be used in a simple way to perform unit tests for these components.
Thanks for your attention.
Greetings!
PHPUnit is probably the first framework that comes to mind when thinking about unit testing in PHP. As far as I see, Joomla itself is already using it.
Some useful links:
http://docs.joomla.org/How_to_create_a_continuous_integration (a bit broader than unit test only).
http://forum.joomla.org/viewtopic.php?p=2177431
http://docs.joomla.org/Running_Automated_Tests_for_Version_1.6
Hope that helps,

Kohana AND PhpUnit in Netbeans

I do some PHP with Kohana 3 (IDE:Netbeans), and got excited about idea of writing tests for code. It sounds pretty cool thing to do, but i have few complications and worries.
Why using Kohana unittest module in browser is like 5 times faster then running tests in Netbeans or command Line ?
How could i exclude all kohana internal tests? In the PHPUnit .xml configuration file ?
Why when run any test i've got in Netbeans panel two entries for it - one with yellow triangle (it says 'file x skipped'), and entry with normal test result. I do get that double entries for every test, also those native from Kohana. I don't mind but it's strange.
All over the Web i see examples, tutorials and screencasts of PHPUnit with sample classes and methods that add two numbers or displays name or do some other trivial things. I've learnt to do those kind of assertions, but how could i test my code in Kohana? My Models are 90% ORM stuff. Controllers? How? Any 'How-tos' and examples are welcome.
I've seen in Ruby tutorial about Rspec a way to test DB by using testing enviroment Databse and rollbacks after finisning tests. Also user actions like clicking links were simulated. Is it possible with PHPUnit ?
There always has been a lot of discussion on what has to be tested and what has not to be tested. Generally my opinion is that you shouldn't test things that should work, like the database driver and connection, this has little to do with your code. Some then argue that you should be able to test it anyway, but in most environment this isn't an easy thing to do and usually a big hassle.
Generally controller actions should be tested as well as any helpers or modules you've written. Usually one uses the paradigm of a mocking framework to get around the database. The good thing about this is a gigantic speed increase in your testing. There are several PHP mocking frameworks as well I suppose.
Another great thing to keep in mind is that you also have user testing. This cannot be simulated with the kind of tests you write in kohana. For this it is interesting to look at http://seleniumhq.org/
It's probably better to split such a rambling question into multiple SO questions.
No idea. Perhaps there's an invocation overhead for NetBeans to invoke phpunit, compared to apache passing the request to PHP.
That might be possible, or you could find a way to set the following option: --exclude-group kohana
No idea sorry.
AFAIK PHPUnit can't do client-interaction tests. How to do system behaviour testing could be a question on its own.

Categories