Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AngularJS + Testacular / Jasmine unit tests: Executed 0 of 0 SUCCESS

I am trying to write unit tests for an AngularJS project. The project is based on angular-seed and uses Testacular to run tests. Every attempt to run test.sh script always ends up with "Executed 0 of 0 SUCCESS".

I tried this super-simple "test":

describe('Testing Jasmine', function() {
  console.log('describe');
  var test = 'test';

  it('should be test', function() {
    console.log('it');
    expect(test).toEqual('test');
  });
});

The result is that only 'describe' is logged, the 'it' part is skipped. When I try the same thing on clean angular-seed clone everything works - so I assume that the testing system itself with Testacular and Jasmine is working correctly. Our project is based on Rails, but the clean angular-seed that I was testing for comparison is running on Apache so I thought that this might be the difference - messed up paths or something in that Rails project.

But there are no error messages, e2e tests work... and also I assume that if some files were missing or paths were incorrect it would not be able to log that 'describe' in tests - if I understand correctly this means that Jasmine is processing the right file (there are no other dependencies in this pseudo-test). How is it possible that the 'describe' part works just fine and only 'it' part seems to be skipped?

Any hint or help would be appreciated.

like image 984
honzzz Avatar asked Oct 03 '12 21:10

honzzz


2 Answers

If you are doing unit tests, do not include the angular-scenario.js file in your testacular config file. That will break the unit tests.

like image 157
Xesued Avatar answered Oct 28 '22 03:10

Xesued


e2e testing in testacular has a long way to go. I struggled with this for a while. It turns out that the left side of an expect must be one of the methods defined in the angular documentation: http://docs.angularjs.org/guide/dev_guide.e2e-testing.

the following is an example

describe('Testing Jasmine', function() {

  it('should be test', function() {
    expect(element('foo').count()).toEqual(1);
  });

});

Remember, if you dont enter in one of the prescribed method calls into the expect, testacular will not run the 'it'

like image 30
jwanga Avatar answered Oct 28 '22 03:10

jwanga