我想使用Velocity和Mocha调试我的测试,使用断点和REPL而不是console.logs.
为了调试我的应用程序代码,我可以使用NODE_OPTIONS='--debug'标志启动我的Meteor应用程序,然后绑定调试器node debug localhost:5858.这不适用于镜像,虽然它的日志说debugger listening on port 5858(主应用程序和镜像日志都说).
我该怎么调试呢?
我正在使用
https://doctorllama.wordpress.com/2014/09/22/bullet-proof-internationalised-meteor-applications-with-velocity-unit-testing-integration-testing-and-jasmine/说我应该能够使用console.log()到在控制台中查看输出.
但对我来说没有任何反应.
如果我将test/jasmine的调用移出到客户端/服务器/然后输出在运行meteor的终端上.
html-reporter还有一个名为Logs的部分.查看代码,它似乎在VelocityLogs上有一个反应式集合.我的google-fu失败了,因为我找不到有关如何在本节中显示任何输出的信息.
登录茉莉花测试的正确方法是什么?
在Chrome中,客户端日志通过JavaScript控制台可见.但我仍然不知道服务器端日志可能在哪里.
我已经运行了DEBUG=1 JASMINE_DEBUG=1 VELOCITY_DEBUG=1 VELOCITY_DEBUG_MIRROR=1,控制台日志也没有出现.
编辑: 我已经创建了一个repo,以提供https://github.com/baerrach/meteor-velocity-issue-223上的问题示例.
使用velocity/jasmine,我有点不知道应该如何测试服务器端方法,要求当前登录的用户.有没有办法让Meteor认为用户是通过stub/fake登录的?
myServerSideModel.doThisServerSideThing = function(){
var user = Meteor.user();
if(!user) throw new Meteor.Error('403', 'not-autorized');
}
Jasmine.onTest(function () {
describe("doThisServerSideThing", function(){
it('should only work if user is logged in', function(){
// this only works on the client :(
Meteor.loginWithPassword('user','pwd', function(err){
expect(err).toBeUndefined();
});
});
});
});
Run Code Online (Sandbox Code Playgroud) 该速度文件中提到的测试覆盖率作为框架的主要特征,但我有一个很难找到入门的具体说明.
是否支持Meteor/Velocity中的测试覆盖率报告(直接或通过第三方包)?
在我收集有关如何使用Velocity的知识的过程中,我遇到了一个片段,其中提到了一个shell变量来设置用于在PhantomJS中运行Karma的浏览器Velocity,因为我每次运行我的应用程序时都会创建一个Chrome窗口弹出窗口DEV-模式.当时我耸耸肩,但在我的两个应用程序中实施了一些测试之后,我可以说在弹出窗口中运行测试是一件令人讨厌的痛苦.
是否有人知道如何运行测试以使其在PhantomJS中运行而不是在Chrome弹出窗口中运行?我认为该变量类似于VELOCITY_BROWSER = PhantomJS,但这似乎不起作用.此外,有没有办法设置Meteor,以便它只是将其设置为默认值,所以我不必每次都创建变量,比如在配置或其他东西?
对流星,速度和茉莉很新,所以不确定我是否做错了什么,使用Jasmine作为它不适合的东西,或者这只是它的工作方式.
我发现我需要为我的所有测试设置超时,以便让它们通过.应该是这种情况还是我做错了什么?
例如,我正在运行的一些测试来检查验证消息:
describe("add quote validation", function() {
beforeEach(function (done) {
Router.go('addQuote');
Tracker.afterFlush(function(){
done();
});
});
beforeEach(waitForRouter);
it("should show validation when Quote is missing", function(done) {
$('#quote').val('');
$('#author').val('Some author');
Meteor.setTimeout(function(){
$('#addQuoteBtn').click();
}, 500);
Meteor.setTimeout(function(){
expect($('.parsley-custom-error-message').text()).toEqual("Quote can't be empty.");
done();
}, 500);
});
}
Run Code Online (Sandbox Code Playgroud) 我尝试过黄瓜以及茉莉花这个全新的项目,但我所有的测试都让这个失败了.当我跑:
$ meteor --test
Run Code Online (Sandbox Code Playgroud)
我明白了:
stream error Network error: ws://localhost:3000/websocket: connect ECONNREFUSED
Run Code Online (Sandbox Code Playgroud)
这种失败来自使用xolvio:cucumber软件包的新应用程序.
当我签出镜像日志时,它结束于:
[chimp] Finished running async processes with errors
stream error Network error: ws://localhost:3000/websocket: connect ECONNREFUSED
stream error Network error: ws://localhost:3000/websocket: connect ECONNREFUSED
Parent process ( 20797 ) is dead! Exiting cucumber
Run Code Online (Sandbox Code Playgroud)
那么,这对我来说是某种系统错误吗?我有最新的流星:1.1.0.2
我也意识到这个错误曾经是一个旧的错误,现在被认为是在流星黄瓜回购中修复的.
有任何想法吗?
根据我的理解,有两个主要的软件包可以帮助测试软件包--TinyTest和Velocity,后者成为官方Meteor测试框架.
从6月份Meteor的DevShop开始,Velocity团队表示Velocity可以和TinyTest一起运行,但是我不明白这两个软件包提供的功能有什么不同,一个(TinyTest)是多余的?
TinyTest仅用于单元测试吗?如果我想进行集成测试,功能测试,我是否需要转向Velocity及其支持的框架?还是别的什么完全不同?有一个比较表,但它有点过时了.
unit-testing functional-testing meteor meteor-velocity tinytest