2013-10-31 27 views
2

是的,万一你想知道。与Chrome Apps的CSP限制条件没有冲突,这也适用于Derick Bailey的Jasmine.Async(https://github.com/derickbailey/jasmine.async)。茉莉花是否适用于Chrome应用程序?

我以正常方式设置测试,对Chrome应用程序环境完全没有任何不同之处。揭开序幕的测试中,我用这个功能,基于传统的茉莉花,调用例子:

function jasmine_run() { 
    var jasmineEnv = jasmine.getEnv(); 
    jasmineEnv.updateInterval = 1000; 
    var htmlReporter = new jasmine.HtmlReporter(); 
    jasmineEnv.addReporter(htmlReporter); 
    jasmineEnv.specFilter = function(spec) { 
     return htmlReporter.specFilter(spec); 
    }; 
    jasmineEnv.execute(); 
} 

一个问题我没有解决,因为我不关心它,是没有任何联系的在输出中(用于运行单个测试等)工作,因为Chrome Apps中没有导航。但是,这绝不影响测试本身,只是HTML显示的一个功能。

几乎一切都值得做的是在我的应用程序异步完成,但Jasmine.Async处理是很清楚,在这个例子中(Facebook的模块是我自己):

describe('Facebook', 
    function() { 
     var async = new AsyncSpec(this); 
     async.it("authorizes", 
      function(done) { 
       Facebook.authorize(
        function(success) { 
         expect(success).toBeTruthy(); 
         done(); 
        } 
       ); 
      } 
     ); 
     async.it("searches", 
      function(done) { 
       Facebook.call("search?q=" + encodeURIComponent('Adolfo') + 
"&type=user&fields=picture,gender,id,name,updated_time,username", 
        function (result) { 
         expect(result.data.length > 0).toBeTruthy(); 
         expect(result.data[0].username).not.toBeNull(); 
         done(); 
        } 
       ); 
      } 
     ); 
    } 
); 

我没有检查查看Jasmine是否适用于Chrome扩展程序,因为我不写扩展名。

回答

0

添加一些信息作为答案,因为问题已经得到解答。

前段时间我在应用程序开发中使用了Jasmine,并没有任何问题。然而,我接近它的方式略有不同,这意味着我的输出确实打开了。

我没有在正常的应用程序中运行测试,而是创建了一个运行茉莉花测试的测试页面。由于应用程序的逻辑(由于CSP)与HTML文件分离,这应该始终可行,并且使测试代码与应用程序逻辑分开更容易。

+0

我不明白为什么测试页面将允许导航工作,除非它是沙箱,这意味着无法访问Chrome API。我想单元测试的代码使用这些API。我错过了什么吗? –

+0

好的。我的意思是你在应用程序之外运行页面(即在浏览器中),但是这意味着你不能使用chrome API,你只是测试你的应用程序逻辑。 –