On Github cfiet / webmuses-tdd
Test-driven development (...) polega na wielokrotnym powtarzaniu kilku kroków:
Najpierw programista pisze automatyczny test sprawdzający dodawaną funkcjonalność. Test w tym momencie nie powinien się udać. Później następuje implementacja funkcjonalności. W tym momencie wcześniej napisany test powinien się udać. W ostatnim kroku, programista dokonuje refaktoryzacji napisanego kodu, żeby spełniał on oczekiwane standardy. WikipediaFunkcja która przyjmuje liczbę i zwraca
describe("FizzBuzz", function () { describe("zwraca 'Fizz' dla liczb podzielnych przez 3", function () { it("działa dla 3", function () { expect(fizzbuzz(3)).toBeEqual("Fizz"); }); it("działa dla 12", function () { expect(fizzbuzz(12)).toBeEqual("Fizz"); }); }); });
function fizzbuzz(n) { if(n % 3 === 0) { return "Fizz" } }
describe("FizzBuzz", function () { describe("zwraca 'Fizz' dla liczb podzielnych przez 3", function () { var testCases = [ 3, 12, 21 ], key, value; for(key in testCases) { value = testCases[key] it("działa dla " + value, function () { expect(fizzbuzz(value).to.be.equal("Fizz"); }); } }); });
define("{nazwa grupy testów}", function () { define("{nazwa podgrupy testów}", function () { beforeEach(function () { // wywołane przed każdym teście }); afterEach(function () { // wywołane po każdym teście }); it("{nazwa testu}", function () { // test }); }); });
expect({zmienna | operacja})
sinon.spy(console, "log"); callSomethingThatLogs(); expect(console.log.called).toBeTruthy(); console.log.restore();
var ajaxStub = sinon.stub(jQuery, "ajax"); ajaxStub.throws(); expect(myAjaxCaller()).not.toThrow(); ajaxStub.restore();