如何使用Jasmine 2在jasmine.json中设置源文件

时间:2016-05-17 18:58:36

标签: node.js unit-testing jasmine mocha

我在testing node.js files找到了Jasmine 2.4的页面,甚至提到在spec / support / jasmine.json中设置spec 和source 文件文件。但是,在线示例 jasmine examples都没有显示如何告诉茉莉在哪里找到源文件。

所以我不断获得ReferenceErrors,因为它似乎没有在我的源文件中读取。应该指出的是,目前我只是用它来教一些学生测试,并使用他们的单文件玩具项目进行练习。 (就像CLI Hangman Game一样。)所以现在还没有module.exports继续进行,尽管他们的一些项目使用require()来引入第三方模块。我一直在使用Karma,直到我意识到它只适用于浏览器JavaScript,require仍然失败。

修改:我刚发现this post基本上都是一样的问题,但我不想使用grunt只是为了让Jasmine在源文件中读取。看起来像应该内置的东西,比如Karma如何询问源文件和规范文件的位置。

第二次编辑:我不应该把它放在这里,但是Emarco将我的问题标记为我在上面第一次编辑中链接的那个,即使我非常具体地解释了为什么其他帖子没有回答我的问题。

4 个答案:

答案 0 :(得分:2)

FWIW我发现在helpers列表中列出我的源文件有效..

{
  "spec_dir": "spec",
  "spec_files": [
    "fooSpec.js",
    "barSpec.js"
  ],
  "helpers": [
    "../src/foo.js",
    "../src/bar.js"
  ]
}

答案 1 :(得分:0)

不幸的是,茉莉花开发人员似乎依赖grunt或其他工具来使用茉莉花。正如您已经提到的,使其无需咕噜声或业力的唯一方法是使用require.js。

here中的require.js文件放入index.html。

只需要在corrosponding spec.js文件中提供源文件,如下所示:

//Be careful to choose the right path from the sight of your spec.js    
var helloworld = require('../src/helloworld'); //the actual filename without '.js'

然后在" helloworld.js"中导出您的脚本。像这样:

exports.helloWorld = function(){
    return "Hello world!";
};

这对我有用......我希望有所帮助,没有找到另一种解决方案。

答案 2 :(得分:0)

在jasmine v3.3.1中,我的以下代码也正在使用Protractor进行测试。 我们要做的就是定义数据源位置。

//My script is in src/com/sam/scripts so I go back to root
var jsondataobj = require('../../../../config/Jsoninput.json');//define  the data source location
describe('spec with 2 specs it mean a spec so here are 2 specs', function() {   


      it('stackoverflow login check', function() {

        browser.driver.ignoreSynchronization = true;
        browser.waitForAngularEnabled(false);

        browser.driver.get(jsondataobj.testsiteurl);
           console.log("Test site URL is : "+jsondataobj.testsiteurl);
           element(by.id(jsondataobj.locators.loginpage.username)).sendKeys(jsondataobj.credentials.username1);


      });

})

我的数据源是config文件夹中的.json文件。确切的文件如下。

{

  "testsiteurl":"https://stackoverflow.com/users/login?ssrc=head&returnurl=https%3a%2f%2fstackoverflow.com%2f",

  "locators":{
    "loginpage":{
      "username":"email",
      "password":"password"
    }
  },

  "credentials":{

    "username1":"stack@over.com",
    "password1":"donjoeweclome"

  }

}

答案 3 :(得分:-2)

spec/support/jasmine.json文件中,您需要拥有并拥有spec_dirspec_files个属性。

{
  "spec_dir": "spec",
  "spec_files": [
    "fooSpec.js",
    "barSpec.js"
  ]
}

jasmine将使用spec_dir为您的spec_files项添加前缀并运行测试。对于fooSpec.js,当您在项目的BASE_DIR上运行jasmine时,测试将针对BASE_DIR/spec/fooSpec.jsBASE_DIR/spec/barSpec.js运行