@-fflow/core
Version:
Core BDD testing package for fflow - Behavior-Driven Development tests in JavaScript
51 lines (45 loc) • 1.51 kB
JavaScript
import { Given, When, Then } from '@cucumber/cucumber';
Given('I have a calculator', function () {
// Initialize calculator in context
this.setContext('calculator', {
result: 0,
add: (a, b) => a + b,
subtract: (a, b) => a - b,
multiply: (a, b) => a * b,
divide: (a, b) => {
if (b === 0) throw new Error('Division by zero');
return a / b;
}
});
});
When('I add {int} and {int}', function (num1, num2) {
const calculator = this.getContext('calculator');
calculator.result = calculator.add(num1, num2);
});
When('I subtract {int} from {int}', function (num2, num1) {
const calculator = this.getContext('calculator');
calculator.result = calculator.subtract(num1, num2);
});
When('I perform {string} with {int} and {int}', function (operation, num1, num2) {
const calculator = this.getContext('calculator');
switch (operation.toLowerCase()) {
case 'add':
calculator.result = calculator.add(num1, num2);
break;
case 'subtract':
calculator.result = calculator.subtract(num1, num2);
break;
case 'multiply':
calculator.result = calculator.multiply(num1, num2);
break;
case 'divide':
calculator.result = calculator.divide(num1, num2);
break;
default:
throw new Error(`Unknown operation: ${operation}`);
}
});
Then('the result should be {int}', function (expectedResult) {
const calculator = this.getContext('calculator');
this.expect(calculator.result).to.equal(expectedResult);
});