我真的很想念独立于控制器测试视图的能力.RSpec的方式.
我想要做的是在渲染视图上执行断言(不涉及控制器!).为了做到这一点,我应该提供必需的Model,ViewData以及HttpContextBase中的一些细节(我们何时会摆脱HttpContext!).
到目前为止,我还没有找到任何允许这样做的东西.它也可能在很大程度上取决于所使用的ViewEngine.
视图可能包含的内容列表如下:
另请注意,我不是在谈论客户端测试,因此Selenium根本就与它无关.它只是简单的.NET测试.
那么有没有选择实际进行视图测试?
谢谢,
德米特里.
我正在SystemStackError使用Rails 3应用程序.
我拥有的所有信息都是无用的一行堆栈跟踪(取自日志):
SystemStackError (stack level too deep):
activesupport (3.2.3) lib/active_support/callbacks.rb:409
Run Code Online (Sandbox Code Playgroud)
所以问题是我如何看到完整的堆栈跟踪?
注意:我不关心为什么会发生这种情况,我只想知道它发生的地方.
使用:Rails 3.2.3,Unicorn.
谢谢.
我想在运行测试时禁用ActiveAdmin.
所以我添加require: false到Gemfile并检查if defined?(ActiveAdmin)路由和初始化程序.
但是Rails仍然会加载模型形式,app/admin因此我得到的错误类似于/app/admin/admin_user.rb:1:in':uninitialized constant ActiveAdmin(NameError)`
将app/admin目录"黑名单" 加载的最佳方法是什么?
我总是在ASP.NET中以某种方式伪装/模拟/存根HttpContext(在ASP.NET MVC/MonoRail中更容易).
但是我可以看到HttpContext本身可以很容易地构造,字面上只有几行代码.
var tw = new StringWriter();
var workerReq = new SimpleWorkerRequest("/webapp", @"c:\here\there\wwwroot", "page.aspx", tw);
var context = new HtpContext(workerReq);
Run Code Online (Sandbox Code Playgroud)
如果我们将这个代码包装成这样的东西它应该工作正常,我们甚至可以使用它来渲染ASPX:
using(Simulate.HttpContext()) {
HttpContext.Current.BlaBla;
}
Run Code Online (Sandbox Code Playgroud)
所以问题是:
我记得Phill Haack使用Reflection hacks构建HttpContext的帖子.
但它似乎并不需要.
干杯,
德米特里.
假设代码如下:
public class DynamicAspxHandler : IHttpHandler {
bool IHttpHandler.IsReusable { get { return false; } }
void IHttpHandler.ProcessRequest(HttpContext httpContext) {
string aspxContent = PlainASPXContent();
Page page = CreatePage(httpContext, aspxContent);
page.ProcessRequest(httpContext);
}
Page CreatePage(HttpContext context, string aspxContent) {
// How to implement this?
}
}
Run Code Online (Sandbox Code Playgroud)
如何实现CreatePage方法基于ASPX的纯字符串内容实例化页面?
注意,ASPX字符串本身可以包含对磁盘上已存在的MasterPage的引用.
我意识到这一点必然存在巨大的性能问题,但在这个阶段我只想知道如何做到这一点.显然我必须缓存结果.
谢谢.
我有stylesheet_link_tag(:all)我的布局.
它在本地计算机上的行为与预期相同,即使我在生产环境中运行它(rails s -e production).
按照预期,我的意思是它会发出现有样式表的所有链接,而不会将它们连接到all.css它,并且它不会发出链接all.css.
但是当我将它部署到Heroku时,结果是相同的,加上一个all.css开头的链接.这是我不想要和不期望的,特别是当本地机器上的生产环境不发出它时.
所以问题是我如何all.css在没有手动指定所有文件的情况下摆脱Heroku上的链接?
谢谢.
理想情况下,它会不断更新.
某种CSS和设计周刊是另一个奖励.
我想为自己解决的问题是:
如何生成javascript文件的绝对链接.
我假设应该有类似下面的那个(遗憾的是似乎没有):
javascript_url 'main' # -> 'http://localhost:3000/javascripts/main.js'
Run Code Online (Sandbox Code Playgroud)
代替:
javascript_path 'main' # -> '/javascripts/main.js'
Run Code Online (Sandbox Code Playgroud)
我需要绝对URL,因为该javascript文件将用于书签.
另外我需要相同的css文件.
谢谢,
德米特里.
我正在使用rspec和黄瓜守卫.要连续运行所选的规格,我只需使用focus标签来确定我想要处理的内容.
但问题是,如果没有该标签的规格,我想运行所有规格.
我怎样才能做到这一点?
注意::我知道所有RSpec选项.所以请在阅读完问题后再回复.
使用ActiveAttr:
class Filter
include ActiveAttr::Model
attribute term
# Overriding to_key, to_param, model_name, param_key etc doesn't help :(
end
class SpecialFilter < Filter
end
Run Code Online (Sandbox Code Playgroud)
如何覆盖ActiveModel以生成所有子类的(相同)预定义输入名称?
= form_for SpecialFilter.new, url: 'xx' do |f|
= f.text_field :term
Run Code Online (Sandbox Code Playgroud)
所以,而不是<input name='special_filter[term]' />我需要得到<input name='filter[term]' />
注意:场景更复杂(使用simple_form和radio/checkboxes/dropdown等),因此请不要建议更改类的名称或类似的解决方法.我确实需要使用表单生成器使用的一致名称.
ruby ×6
asp.net ×2
asp.net-mvc ×2
rspec ×2
.net ×1
activeadmin ×1
activemodel ×1
activerecord ×1
css ×1
cucumber ×1
dependencies ×1
gem ×1
helpers ×1
heroku ×1
html ×1
httpcontext ×1
httphandler ×1
javascript ×1
mocking ×1
simple-form ×1
stack-trace ×1
stylesheet ×1
tdd ×1
testing ×1
unit-testing ×1
url ×1
views ×1