" ReferenceError:无法找到变量:Mustache"在单元测试中?

时间:2017-04-26 14:25:30

标签: javascript unit-testing mustache

我正在运行我在Javascript端运行单元测试的rails应用程序(使用Teaspoon / Jasmine)。

有趣的是,在我调用的函数我知道Mustache.render函数正在工作(我能够控制它.log它的返回值(这是Mustache.render函数)并看到它正在工作。但是当我从单元测试中调用该函数时,我得到了一个:

Failure/Error: ReferenceError: Can't find variable: Mustache

作为参考,我实际上并没有直接调用Mustache渲染函数,只需调用使用它的函数并抓住它的返回值再次检查。

我已经能够成功地抓住并使用各种其他功能并使用它们就好了,这只是给我带来麻烦。 Mustache.render对象可以不存在于自己的文件或范围之外吗?

编辑:示例代码:

_makeSomething: function viewMakeSomething(data) {
      const template = templates.something;

      return Mustache.render(document.querySelector(template).innerHTML, data);
    }

我的测试代码很简单:

  it('_makeSomething object', function() {

    let obj = {id: 1234, content: "_makeSomething Assertion", author: "Test User"}
    let $something = _makeSomething(obj);
  });

(现在我只是在我断言之前抓住它或将它拆分/等等......但它只是在调用它)

1 个答案:

答案 0 :(得分:1)

问题是您茶匙无法访问您的开发/生产资产pipelene。您应该指定为测试加载的JS。这是防止从清单加载所有文件以测试某些功能所必需的。因为这是单元测试。

来自example

//= require mustache
describe("My great feature", function() {

  it("will change the world", function() {
    expect(true).toBe(true);
    expect(Mustache).toBeDefined();
  });

});