Dia 62/2019 - Jasmine

Desafio #92daysofcode que fiz no final de 2019. Nesse artigo temos o dia 62, mostrando o uso do Jasmine.

Código

1
2
3
4
5
6
7
8
9
10
11
const SpecReporter = require('jasmine-spec-reporter').SpecReporter;

jasmine.getEnv().clearReporters(); // remove default reporter logs
jasmine.getEnv().addReporter(new SpecReporter({ // add jasmine-spec-reporter
spec: {
displayPending: true,
},
summary: {
displayDuration: false,
}
}));
1
2
3
4
5
6
7
8
9
{
"spec_dir": "./",
"spec_files": [
"day.js"
],
"helpers": [
"reporter.js"
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class Calculator {
operation(n1, n2, op) {
const areDefined = typeof n1 !== 'undefined' && typeof n2 !== 'undefined';
const areNumbers = typeof n1 === 'number' && typeof n2 === 'number';

if (areDefined && areNumbers) {
switch(op) {
case '+':
return n1 + n2;
case '-':
return n1 - n2;
case '*':
return n1 * n2;
case '/':
if(n2 === 0) {
return NaN;
}

return n1 / n2;
}
}

return false;
}

add(num1, num2) {
return this.operation(num1, num2, '+');
}

sub(num1, num2) {
return this.operation(num1, num2, '-');
}

mult(num1, num2) {
return this.operation(num1, num2, '*');
}

div(num1, num2) {
return this.operation(num1, num2, '/');
}
};

module.exports = Calculator;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Jasmine - Behavior-Driven JavaScript
// https://jasmine.github.io/
const Calculator = require('./calculator');

describe('Calculator', () => {
let calculator;

beforeEach(() => {
calculator = new Calculator();
});

it('should be defined', () => {
expect(calculator).toBeDefined();
expect(calculator).not.toBeUndefined();
expect(calculator).toBeTruthy();
expect(calculator).not.toBeFalsy();
});

it('should return false', () => {
expect(calculator.add()).toBeFalsy();
expect(calculator.add(1)).toBeFalsy();
expect(calculator.add('text')).toBeFalsy();
expect(calculator.add('text', 1)).toBeFalsy();

expect(calculator.sub()).toBeFalsy();
expect(calculator.sub(1)).toBeFalsy();
expect(calculator.sub('text')).toBeFalsy();
expect(calculator.sub('text', 1)).toBeFalsy();

expect(calculator.mult()).toBeFalsy();
expect(calculator.mult(1)).toBeFalsy();
expect(calculator.mult('text')).toBeFalsy();
expect(calculator.mult('text', 1)).toBeFalsy();

expect(calculator.div()).toBeFalsy();
expect(calculator.div(1)).toBeFalsy();
expect(calculator.div('text')).toBeFalsy();
expect(calculator.div('text', 1)).toBeFalsy();
});

it('adds 1 and 1', () => {
expect(calculator.add(1, 1)).toEqual(2);
});

it('subtracts 3 from 5', () => {
expect(calculator.sub(5, 3)).toEqual(2);
});

it('subtracts 10 from 5', () => {
expect(calculator.sub(5, 10)).toEqual(-5);
});

it('multiplies 12 and 5', () => {
expect(calculator.mult(12, 5)).toEqual(60);
});

it('multiplies 5 and 0', () => {
expect(calculator.mult(5, 0)).toEqual(0);
});

it('divides 25 by 5', () => {
expect(calculator.div(25, 5)).toEqual(5);
});

it('does not divide by 0', () => {
expect(calculator.div(25, 0)).toEqual(NaN);
});
});

Conclusão

A postagem original pode ser vista no meu Instagram e o código está acessível no meu Github.

Relacionados

Ao fechar este aviso ou continuar navegando no site Nerd Calistênico, você aceita o uso de cookies.

Este site usa cookies para assegurar a melhor experiência para os nossos usuários. Consulte nossa política de privacidade.

Uma nova versão está disponível. Clique aqui para atualizar.