我正在尝试用黄瓜进行水豚以获得更好的javascript测试覆盖率.我有很多步骤可以检查或使用Rails集成测试助手中的内容,例如:
assigns(:current_user).should_not be_nil
Run Code Online (Sandbox Code Playgroud)
无论我怎么称呼assigns,即使我说出类似的p assigns错误:
undefined method `template' for nil:NilClass (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
所以,似乎我不能再那样做了.是否有一种替代方法可以反省控制器中发生的事情,或者至少以某种方式运行这些步骤,以便我能够进行集成测试?
我一直在尝试使用以下代码(所有内容都在同一个程序集中定义):
namespace SomeApp{
public class A : MarshalByRefObject
{
public byte[] GetSomeData() { // }
}
public class B : MarshalByRefObject
{
private A remoteObj;
public void SetA(A remoteObj)
{
this.remoteObj = remoteObj;
}
}
public class C
{
A someA = new A();
public void Init()
{
AppDomain domain = AppDomain.CreateDomain("ChildDomain");
string currentAssemblyPath = Assembly.GetExecutingAssembly().Location;
B remoteB = domain.domain.CreateInstanceFromAndUnwrap(currentAssemblyPath,"SomeApp.B") as B;
remoteB.SetA(someA); // this throws an ArgumentException "Object type cannot be converted to target type."
}
}
}
Run Code Online (Sandbox Code Playgroud)
我要做的是将第一个AppDomain中创建的"A"实例的引用传递给子域,并让子域在第一个域上执行方法.在'B'代码的某些方面,我将调用'remoteObj.GetSomeData()'.必须这样做,因为'GetSomeData'方法中的'byte …
对于带有图标的JLabel,如果setHorizontalTextPosition(SwingConstants.LEADING)是,则无论标签有多宽,都会在文本后面立即绘制图标.
这对于列表来说尤其糟糕,因为图标将遍布整个地方,具体取决于每个项目的文本长度.
我跟踪代码,似乎是SwingUtilities#layoutCompoundLabelImpl,文本宽度只是设置为SwingUtilities2.stringWidth(c, fm, text),而图标x设置为跟随文本而不考虑标签宽度.
这是最简单的情况:
import java.awt.*;
import javax.swing.*;
public class TestJLabelIcon
{
public static void main(String args[])
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JLabel c = new JLabel("abc");
c.setHorizontalTextPosition(SwingConstants.LEADING);
c.setHorizontalAlignment(SwingConstants.LEADING);
c.setIcon(UIManager.getIcon("FileChooser.detailsViewIcon"));
c.setBorder(BorderFactory.createLineBorder(Color.RED));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.getContentPane().add(c);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
您可以看到标签始终填充框架但图标保持不变.如果将两个参数都设置为,则会出现镜像问题TRAILING.
我知道我可以覆盖UI,或使用JPanel等.我只是想知道我是否在JLabel中遗漏了一些简单的东西.如果没有,它似乎是一个Java bug.
仅供参考,这是Windows XP上的jdk1.6.0_06.
在Java中寻找快速,简单的方法来更改此字符串
" hello there "
Run Code Online (Sandbox Code Playgroud)
看起来像这样的东西
"hello there"
Run Code Online (Sandbox Code Playgroud)
我用一个空格替换所有这些多个空格,除了我还希望字符串开头的一个或多个空格不见了.
像这样的东西让我部分在那里
String mytext = " hello there ";
mytext = mytext.replaceAll("( )+", " ");
Run Code Online (Sandbox Code Playgroud)
但不完全.
当我在Windows上时,我一直在使用git和fugitive.vim来管理代码.但是,我遇到了一个问题.根据文档,:GDiff命令应该是一个diff窗口,并允许我只放置文件的一部分.但是,当我在包含更改的文件中发出命令时,我收到以下错误消息:

这是windows的问题吗?VIM?逃犯?msysgit?文件权限?有人知道吗?
目前我正在使用rsvg加载svg(从字符串,而不是从文件)和绘图到cairo.谁知道更好的方法?我在我的应用程序中的其他位置使用PIL,但我不知道如何使用PIL执行此操作.
要从地图中删除普通标记,我理解您只需调用marker.setMap(null),但在实施Google Maps路线服务时,它会自动将标记A和B添加到地图上(计算从A点到B点的方向) .我无法控制这些标记,所以我无法以正常方式删除它们.那么如何删除这些标记(我在地图上有自定义标记)?
我正在使用一些旧代码并使用ActiveResource进行非常基本的Twitter集成.我想尽可能少地触摸应用代码,并在使用ActiveResource的同时将OAuth引入.
不幸的是,我发现没有简单的方法来做到这一点.我确实遇到了oauth-active-resource gem,但它没有完全记录,似乎是为创建完整的API包装库而设计的.正如您可以想象的那样,我想避免为这一个遗留变更创建一个完整的Twitter ActiveResource API包装器.
那里有成功案例吗?在我的实例中,离开ActiveResource可能会更快,而不是让它工作.我很高兴被证明是错的!
假设我有一个基类TestBase,我定义了一个虚拟方法TestMe()
class TestBase
{
public virtual bool TestMe() { }
}
Run Code Online (Sandbox Code Playgroud)
现在我继承了这个类:
class Test1 : TestBase
{
public override bool TestMe() {}
}
Run Code Online (Sandbox Code Playgroud)
现在,使用Reflection,我需要找出TestMe方法是否已在子类中重写 - 是否可能?
我需要它 - 我正在为类型"object"编写一个设计器可视化器来显示整个继承层次结构,并显示在哪个级别覆盖了哪些虚拟方法.
是否可以使用.NET提供的图像文件编解码器编码的图像大小有限制?
我正在尝试编码大小为4GB的图像,但它根本无法正常工作(或无法正常工作,即写出不可读的文件).bmp,.jpg,.png或.tif编码器.
当我将图像大小降低到<2GB时,它确实适用于.jpg而不是.bmp,.tif或.png.
我的下一次尝试是尝试libtiff,因为我知道tiff文件适用于大图像.
什么是大图像的良好文件格式?或者我只是达到文件格式限制?
(所有这些都是在具有8 GB RAM的64位操作系统(WinXP 64)上完成的,并使用x64架构进行编译.)
Random r = new Random((int)DateTime.Now.Ticks);
int width = 64000;
int height = 64000;
int stride = (width % 4) > 0 ? width + (width % 4) : width;
UIntPtr dataSize = new UIntPtr((ulong)stride * (ulong)height);
IntPtr p = Program.VirtualAlloc(IntPtr.Zero, dataSize, Program.AllocationType.COMMIT | Program.AllocationType.RESERVE, Program.MemoryProtection.READWRITE);
Bitmap bmp = new Bitmap(width, height, stride, PixelFormat.Format8bppIndexed, p);
BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
ColorPalette cp = bmp.Palette;
for (int i …Run Code Online (Sandbox Code Playgroud)