首页 > 解决方案 > How to unit test just one function, without browser, on Angular

问题描述

Let's say I have a function that performs a very long calculation:

export const veryLongCalculation = () => 1 + 1;

How can I unit test this function in Angular without opening Karma and without configuring anything else?

I would like to write a test like this one:

describe('Difficult Calculations', () => {
  it('should calculate', () => {
    const calcul = veryLongCalculation();
    expect(calcul).toBe(2);
  });
})

If I run ng test it starts Karma and the browser (and takes ages).

Can I run just that test without opening a browser and initializing everything? I guess there should be a command to do it, already configured. How?

标签: angulartypescriptunit-testingjasmine

解决方案


I suggest trying Chrome in headless mode. This way Karma and Chrome remain, but the browser window won't be opened and the process will be quicker.

To test it add a script to package.json:

"test-headless": "ng test --watch=false --browsers=ChromeHeadless"

And run it using npm run test-headless.

Note that an Angular-based code runs in a browser, so it is highly recommended to run the test suits in a browser. Otherwise, the tests could have false positive/negative results.


推荐阅读