我正在运行我在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);
});
(现在我只是在我断言之前抓住它或将它拆分/等等......但它只是在调用它)
答案 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();
});
});