如何有效地将源文件包装在将导出到spec文件的函数中?

时间:2016-05-20 22:02:32

标签: javascript node.js unit-testing jasmine

我想向学生提问,定义运营商的排名(+/-*^)。

我使用的方法要求我使用exports.function_name = function() 为了使spec文件能够导入它。

但是,我希望学生不必使用exports.function,因为这不是他们在编辑器中所做的。

因此,我需要找到一种有效的方法来包装学生输入的代码。这就是我到目前为止(src文件:../src/C3Q2.js):

exports.StudentSolution = function()
{    
var operators = {
        "^": 4,
        "*": 3,
        "/": 2,
        "+": 1,
        "-": 0,
 };

return operators;//This works but I dont want the student to do this 
//extra step, the only thing they should have to do is define the variable
//operators                    
};

我正在测试src文件的文件如下(spec文件):

var calculator = require("../src/C3Q2.js");

describe("precedence", function ()
{
it("check precedence", function () 
  {
   var solution =  calculator.StudentSolution();


  var product = solution["^"];

   expect(product).toBe(4);
  });
 });    

这有效,但我希望学生只需要定义运算符变量。是否有更有效的方法来自动化和包装函数?

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的问题,但您可以像这样直接导出对象;

exports.StudentSolution = {
  "^": 4,
  "*": 3,
  "/": 2,
  "+": 1,
  "-": 0,
};

这样你的测试可以像这样引用它;

var calculator = require("../src/C3Q2.js");

describe("precedence", function() {
  it("check precedence", function() {
    var product = calculator.StudentSolution["^"];
    expect(product).toBe(4);
  });
});

这将删除"额外步骤"这个功能,是你的意思吗?