У меня есть класс SNumber
export class SNumber extends Symbol{
private _value: number;
constructor(_value: number){
super(SymbolType.VARIABLE);
this._value = _value;
}
public add(symbol: Symbol, symbolic?: boolean): Symbol {
if(symbol instanceof SNumber && !symbolic){
return new SNumber(this._value + symbol._value);
}
return new SExpression(Arrays.toList(this.copy(), symbol));
}
public substract(symbol: Symbol, symbolic?: boolean): Symbol {
if(symbol instanceof SNumber && !symbolic){
this.add(symbol.negate(), false);
}
return new SExpression(Arrays.toList(this.copy(), symbol.negate()));
}
public multiply(symbol: Symbol, symbolic?: boolean): Symbol {
if(symbol instanceof SNumber && !symbolic){
return new SNumber(this._value*symbol._value);
}
return new SMultiplication(this.copy(), symbol);
}
public divide(symbol: Symbol, symbolic?: boolean): Symbol {
if(symbol instanceof SNumber && !symbolic){
if(symbol._value == 0){
throw Error("Division by null");
}
return new SNumber(this._value / symbol._value);
}
return new SFraction(this.copy(), symbol);
}
public negate(symbolic?: boolean): Symbol {
return new SNumber(-1*this._value);
}
public invert(symbolic?: boolean): Symbol {
if(!symbolic){
return new SNumber(1/this._value);
}
return new SFraction(Constants.ONE, this.copy());
}
public copy(): Symbol{
return new SNumber(this._value);
}
public get value(): number{
return this._value;
}
}
, и я пытаюсь проверить его методы с помощью простого теста с жасмином.
import { SNumber } from './SNumber';
describe('Testing aritmetic methods ', () => {
let number1:SNumber;
let number2:SNumber;
beforeEach(()=>{
number1 = new SNumber(2);
number2 = new SNumber(4);
})
it('When adding number1 to number2, should return 6', () => {
var result = number1.add(number2);
expect(result).toEqual(6);
});
it('When substracting number1 from number2, should return 2', () => {
var result = number1.substract(number2);
expect(result).toEqual(2)
});
});
Но по какой-то причине, если мой тест содержит ключевое слово new, это не работает.Карма не пишет никаких ошибок, просто прекратите компиляцию в половине процесса.Не имеет значения, находится ли instatiation (new) в функции beforeEach или где-либо еще.Если я напишу более простой тест, как
describe('Testing aritmetic methods ', () => {
let number1
let number2
beforeEach(()=>{
number1 = 2;
number2 = 4;
})
it('When adding number1 to number2, should return 6', () => {
var result = number1 + number2;
expect(result).toEqual(6);
});
it('When substracting number1 from number2, should return 2', () => {
var result = number1 - number2;
expect(result).toEqual(2)
});
Все работает хорошо.
Спасибо за любой совет.