在Jasmine中生成测试

JQu*_*ile 1 javascript jasmine

我有一些我用Jasmine测试的JavaScript .这时,我的一个套房看起来像这样:

var library = require('../library');

describe('My App -', function() {
   afterEach(function(done) {
      // some clean up code goes here
      library.cleanUp(done);
      done();       
   });

   describe('Test Operation 1 -', function() {
      beforeEach(function(done) {
         library.init(done);
      });

      it('should load fine', function() {
        if (library) {
          expect(true).toBe(true);
        } else {
          expect(false).toBe(true);
        }
      });

      var parameters = [1, 8.24, -1];
      var results = [5, 4, 0];

      // [TODO]: Create tests here
   });   
});
Run Code Online (Sandbox Code Playgroud)

有我生成我的规格的方式parametersresults数组?换句话说,在运行时,我基本上想要动态运行:

it('should be 5 when parameter is 1', function(done)) {
  var result = library.calculate(1);
  expect(result).toBe(5);
  done();
});

it('should be 4 when parameter is 8.24', function(done) {
  var result = library.calculate(8.24);
  expect(result).toBe(4);
  done();
});

it('should be 0 when parameter is -1', function(done) {
  var result = library.calculate(-1);
  expect(result).toBe(0);
  done();
});
Run Code Online (Sandbox Code Playgroud)

我不想要以下内容:

it('should test the parameters', function() {
  for (var i=0; i<parameters.length; i++) {
    var result = library.calculate(parameters[i]);
    expect(results[i]).toBe(result);
  }
});
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何在运行时动态生成一些测试.

谢谢!

小智 8

基于@Michael Radionov的注释,您可以使用for循环动态生成测试用例.动态测试用例生成的示例代码如下所示:

describe("Generating Tests with Jasmine",function(){
        //var parameters = [1, 8.24, -1];
        //var results = [5, 4, 0];

        var tests = [
            {parameter: 1,       result: 5},
            {parameter: 8.24,    result: 4},
            {parameter: -1, result: 0}
        ];

        tests.forEach(function(test) {
            it('should be ' + test.result + ' when parameter is '+test.parameter, function(done) {
                var result = library.calculate(test.parameter);
                expect(result).toBe(test.result);
                done();
            });
        });

    });
Run Code Online (Sandbox Code Playgroud)

  • 我也可以异步添加它们吗? (5认同)