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();