我有很多对象需要数据库访问的方法.我们正在寻求进行单元测试,但是如果可能的话,我们希望避免使用模拟对象.我想知道是否有一种方法可以重构下面显示的Validate方法,以便它不需要db访问.在实际的应用程序中,通常会有更多的进展,但我认为这个简化的例子应该足够了.
如果我们需要,我们将学会使用模拟对象,但它似乎只是很多开销,所以我正在寻找替代方案.
public class Person
{
public string Name;
public string Validate()
{
if (PersonDA.NameExists(Name))
{
return "Name Already Used";
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想我很了解ViewState,但以下是给我一些麻烦:
来自http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/truly-understanding-viewstate.aspx
即使ViewState被禁用,回发控件(如下拉列表和文本框)也会恢复其发布状态(下拉列表的选定项目已被'发布'),因为即使禁用了ViewState,控件仍然可以发布其值
假设DropDownList将EnableViewState设置为false,那么(根据上面的引用)当用户通过选择DropDownList中的项目发出回发时,以下代码应该导致Label1.Text显示所选项目的值(因此DropDownList.SelectedValue应该返回用户选择的值,即使viewstate被禁用),但我得到一个空字符串:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string[] number = {"first","second","third"};
DropDownList1.DataSource = number;
this.DataBind();
}
if (IsPostBack)
{
Label1.Text = DropDownList1.SelectedValue; // displays empty string
// Label1.Text = DropDownList1.SelectedItem.Text; // causes an exception
// Label1.Text = DropDownList1.SelectedIndex.ToString(); // displays empty string
}
}
Run Code Online (Sandbox Code Playgroud)
该文章的作者似乎是这方面的专家,所以我假设我做错了什么!?!
感谢名单
我有一个
而(cin >> string)
我希望用户输入字符串的循环.但是,我不知道如何结束输入.我知道在*nix机器上使用bash shell,我可以使用ctrl-D.但这似乎不适用于Windows的cmd.exe ...
有小费吗?
[编辑]这是在C++上
我希望对另一台服务器上的另一个脚本发出一个简单的GET请求.我该怎么做呢?
在一种情况下,我只需要请求外部脚本而无需任何输出.
make_request('http://www.externalsite.com/script1.php?variable=45'); //example usage
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,我需要获取文本输出.
$output = make_request('http://www.externalsite.com/script2.php?variable=45');
echo $output; //string output
Run Code Online (Sandbox Code Playgroud)
说实话,我不想乱用CURL,因为这不是CURL的工作.我也不想使用http_get,因为我没有PECL扩展.
fsockopen会工作吗?如果是这样,如何在不读取文件内容的情况下执行此操作?没有其他办法吗?
谢谢大家
我应该补充一下,在第一种情况下,我不想等待脚本返回任何内容.据我所知,file_get_contents()会等待页面完全加载等?
在C++中,我想定义一些将在类中使用的字符串,但这些值在所有实例中都是通用的.在CI中会使用#defines.这是一个尝试:
#include <string>
class AskBase {
public:
AskBase(){}
private:
static std::string const c_REQ_ROOT = "^Z";
static std::string const c_REQ_PREVIOUS = "^";
static std::string const c_REQ_VERSION = "?v";
static std::string const c_REQ_HELP = "?";
static std::string const c_HELP_MSG = " ? - Help\n ?v - Version\n ^^ - Root\n ^ - Previous\n ^Z - Exit";
};
int main(){AskBase a,b;}
Run Code Online (Sandbox Code Playgroud)
如果需要C++ 0x,那是可以接受的.
想象一下,我创建了这个类:
public class ColoredPolygon
{
public Point[] Vertices { get; set; }
public Brush Brush { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在Visual Studio中,不难看出哪个"Brush"是类,哪个是属性.但有些事情告诉我,在课堂上命名一个属性并不是最好的做法.你怎么称这个属性?
更新关于命名的另一个问题:你如何命名数组?复数还是单数?
我正在编写C++控制台程序.编译后,当我从文件浏览器运行程序时,cmd.exe会自动关闭,以至于无法看到我的程序输出.
解决这个问题的唯一方法就是从cmd.exe里面运行程序
无论如何在程序运行完成后保持cmd.exe打开?
有什么设置我可以在某处改变吗?我不想使用cmd.exe/K运行批处理脚本
谢谢!
[编辑]不知道这是否重要,但我在Vista x64上
我有这种情况,我正在阅读包含存储为字符串字段的日期的130K记录.有些记录包含空格(nulls),有些包含这样的字符串:'dd-MMM-yy',有些包含'dd/MM/yyyy'.
我写了一个像这样的方法:
public Date parsedate(String date){
if(date !== null){
try{
1. create a SimpleDateFormat object using 'dd-MMM-yy' as the pattern
2. parse the date
3. return the parsed date
}catch(ParseException e){
try{
1. create a SimpleDateFormat object using 'dd/MM/yyy' as the pattern
2. parse the date
3. return parsed date
}catch(ParseException e){
return null
}
}
}else{
return null
}
}
Run Code Online (Sandbox Code Playgroud)
所以你可能已经发现了这个问题.我正在使用try .. catch作为我逻辑的一部分.最好是我可以事先确定String实际上包含某种格式的可解析日期然后尝试解析它.
那么,是否有一些API或库可以帮助解决这个问题?我不介意写几个不同的Parse类来处理不同的格式,然后创建一个工厂来选择正确的6,但是,我该如何确定哪一个?
谢谢.
我试图在Rails应用程序中使用Datamapper作为ActiveRecord的替代品.
我已按照各种设置说明操作,并在我的应用程序中使用Datamapper.
但是我发现不再有效的第一件事就是:
<%= f.error_messages %>
Run Code Online (Sandbox Code Playgroud)
我相信这与ActiveRecord帮助器有关 - 在View for Datamapper中是否有另一种报告验证失败的方法?
我可能会遇到更多这样的功能示例,需要在我的应用中进行调整吗?
这个项目是否可行或是否可能涉及许多复杂的hackery?
是否有人记录了所有必需的应用程序调整?
我怀疑Datamapper没有被广泛使用,因为我发现在Google上很难找到这些简单的指令.
c++ ×3
c# ×2
cmd ×2
activerecord ×1
asp.net ×1
asynchronous ×1
c++11 ×1
curl ×1
database ×1
datamapper ×1
date ×1
dependencies ×1
http ×1
java ×1
naming ×1
parsing ×1
php ×1
unit-testing ×1
vb.net ×1
viewstate ×1
vista64 ×1