我的一个基础存储库类包含一个方法:
public abstract class RepositoryBase<T, TDb> : IRepository<T>
where T : IEntity
where TDb : class, IDbEntity, new()
{
protected internal abstract Table<TDb> GetTable();
...
}
Run Code Online (Sandbox Code Playgroud)
我正在为包含所述方法的实现的派生存储库类编写单元测试:
public class CmOptionRepository :
RepositoryBase<ICmOption, CMCoreDAL.DbData.CMOption>, ICmOptionRepository
{
protected internal override System.Data.Linq.Table<CMCoreDAL.DbData.CMOption>
GetTable()
{
return Context.CMOptions;
}
....
}
Run Code Online (Sandbox Code Playgroud)
这里:Context - 是数据库的Linq模型,CMOptions - 数据库表之一.
我希望我的'GetTable()'方法返回一组特殊的数据.
我要模仿这个方法:
System.Data.Linq.Table<CMCoreDAL.DbData.CMOption> table = ...;
Mock<CmOptionRepository> mockRepository =
new Mock<CmOptionRepository>(MockBehavior.Strict);
mockRepository.Setup(mock => mock.GetTable()).Returns(table);
Run Code Online (Sandbox Code Playgroud)
但不知道如何创建System.Data.Linq.Table<CMCoreDAL.DbData.CMOption>类的实例.
问题:我怎么嘲笑System.Data.Linq.Table<>?或者我可能需要更改方法签名以避免System.Data.Linq.Table<>类使用?
请指教.欢迎任何想法.
PS我正在使用Moq.
我得到一个Capistrano配方与Bundler和Rails(3.0.3)应用程序一起工作,但是在使用某些基本功能方面遇到了麻烦.
在关于"使用Capistrano自动部署" 的Bundler文档之后,我正在尝试获取有关任务的更多信息,但由于某种原因它"不存在"......
$ cap -e bundle:install
The task `bundle:install' does not exist.
Run Code Online (Sandbox Code Playgroud)
安装了Capistrano(2.5.19)gem,我正试图从客户端(而不是服务器)的项目根目录执行该命令.
实际上cap -T没有显示任何与'bundle'或'install'相关的内容
$ cap -T
cap deploy # Deploys your project.
cap deploy:check # Test deployment dependencies.
cap deploy:cleanup # Clean up old releases.
cap deploy:cold # Deploys and starts a `cold' application.
cap deploy:migrate # Run the migrate rake task.
cap deploy:migrations # Deploy and run pending migrations.
cap deploy:pending # Displays the commits since your last deploy.
cap deploy:pending:diff # Displays the …Run Code Online (Sandbox Code Playgroud) 我正在为ASP.NET MVC中未经身份验证的用户实现一个简单的会话购物车,我想做得对.
在过去,我总是将购物车ID存储在持久Session["CartID"]存储中并作为cookie存储.每当我需要显示购物车时,我都会从我Carts和CartItems桌子上查找用户的购物车商品.但在内部我知道更强烈的方法会更清洁.
在谷歌搜索最新的会话MVC之后,我找到了这个术语HttpSessionStateWrapper,这似乎是处理会话的可测试方式.但我没有找到任何好的教程或标准化的实现.也许这只是一个嗡嗡声,我应该坚持Session["..."].
在最新版本的ASP.NET MVC中使用会话实现购物车的正确方法是什么?
我正在使用以下命令在Twitter上跟踪一些关键字.我想打印推文作者的"screen_name"属性.我可以让下面的命令工作但是想从作者screen_name中删除"引号".我怎么能这样做?
curl -N -d @tracking http://stream.twitter.com/1/statuses/filter.json \
-umyuser:mypass | \
sed -e 's/[{}]/''/g' | \
awk -v RS=',"' -F: '/^screen_name/ {print $2}'
Run Code Online (Sandbox Code Playgroud) 在阅读了这个问题和建议的链接后,解释了什么时候更适合使用SQLite和另一个DB,我仍然不清楚一件事,我希望有人可以澄清一下。
他们说:
SQLite运作良好的情况
网站
SQLite通常可以作为低流量到中流量网站的数据库引擎...
...
另一个RDBMS可能效果更好的情况
客户端/服务器应用程序...
如果您有许多客户端程序通过网络访问公共数据库 ...
网站不是客户端/服务器应用程序吗?
我的意思是我不明白,网站正是这种情况,我有许多客户端程序(具有Web浏览功能的用户)通过一个服务器应用程序同时访问一个公共数据库。
为了简单起见:在一天结束时,是否有可能将此SQLite用于电子商务网站,在线目录或包含大约1000个产品/页面的CMS网站?
我有一个带有a EditText和按钮的Dialog .这EditText将命名我将创建的数据库表,以便验证它的最重要性.所以我想提出2个问题:
1)这很简单,但我无法在任何地方找到它:数据库表名称可以接受哪些字符?可以接受号码吗?并且数字可以是第一个字符吗?
2)我设法验证EditText使用TextWtacher.这是代码:
et_name.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
String filtered_str = s.toString();
if (filtered_str.matches(".*[^a-z^0-9].*")) {
filtered_str = filtered_str.replaceAll("[^a-z^0-9]", "");
s.clear();
// s.insert(0, filtered_str);
Toast.makeText(context,
"Only lowercase letters and numbers are allowed!",
Toast.LENGTH_SHORT).show();
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
Run Code Online (Sandbox Code Playgroud)
目前,如果用户插入除小写字母和数字以外的任何字符,则清除文本框.如果我取消注释s.insert(0, filtered_str);以使用过滤后的字符串替换EditText,我的应用程序将挂起.猜猜我在调试中发现了什么?
错误/ AndroidRuntime(2454):java.lang.StackOverflowError = D.
问题是......我怎样才能替换s文本?
- …
所有,
我遇到了标准fields_for设置的问题.在我的"_form"部分我有:
<div class="comment_list">
<%= f.fields_for :comments do |cf| %>
<%= render :partial => 'comments/comment_fields', :locals => {:f => cf, :tester => true} %>
<% end %>
<%= link_to_add_fields "Add a comment", f, :comments %>
</div>
Run Code Online (Sandbox Code Playgroud)
在"_comment_fields"部分中,我有通常的字段,然后是我的测试变量:
<%= tester.to_s %>
Run Code Online (Sandbox Code Playgroud)
当我删除测试器变量时,一切都运行良好.一旦我添加测试变量,我就会收到此错误:
ActionView :: Template :: Error(#Class的未定义局部变量或方法`tester':0xa1f3664>:0xa1f1bd4>)
有没有其他人在使用具有多个本地的fields_for时遇到此问题?
为了详细说明,我的"_comment_fields"部分看起来像这样:
<div class="comment dynamic_field">
<span class="comment_content"><%= f.text_field :content, :class => "comment_content" %></span>
<%= tester.to_s %>
<%= link_to_remove_fields "remove", f %>
</div>
Run Code Online (Sandbox Code Playgroud)
它仅从"_form"部分调用.
我正在开发一个Web应用程序,它将广泛使用AJAX技术进行客户端/服务器通信......特别是JSON-RPC.Zend Framework正在服务器端使用,它提供了一个很好的JSON-RPC服务器,我想使用它.
我的目标是构建一个可维护的系统,将大量服务器端功能暴露给客户端(javascript),而不会产生不必要的代码重复.我已经看过很多关于如何使用ZF的JSON-RPC服务器的博客文章和教程(见这里和这里),但它们似乎都面向暴露一个小型的公共可用API.代码重复很常见,例如一篇博文有以下暴露方法:
public static function setTitle($bookId, $title) {
$book = new Nickel_Model_Book($bookId);
$book->setTitle($title);
$book->update();
return true;
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢有两种setTitle方法的事实.如果一个方法签名发生变化,另一个必须保持同步...如果你的API很广泛,似乎是一个可维护性的噩梦.在我看来应该有一个Book类,有一种setTitle方法.
我最初的想法是为@export我想要暴露的方法/类添加一个docblock注释.当我决定公开setTitle方法时,我只是添加注释而不是新方法.
我看到的一个潜在问题涉及对象持久性.在服务器端,setTitle设置对象的title属性是有意义的......但是在update()调用之前不会将其保留在数据库中.客户端,调用setTitle应立即影响数据库.一种可能的解决方案是修改所有访问器,使得它们采用可选的第二个参数,表示修改应立即更新数据库:
function setTitle($title, $persist = false) {
$this->title = $title;
if ($persist) $this->update();
}
Run Code Online (Sandbox Code Playgroud)
某种代理类可以确保$persist为所有客户端RPC调用设置标志.
另一个问题是PHP对象的序列化.在服务器端,进行OO风格的$book->setTitle("foo")调用book.setTitle(1234, "foo")是有意义的,但由于缺乏状态,客户端是有意义的(其中1234是本书的ID).我的解决方案是让上述代理类负责以某种方式book.setTitle(1234, "foo")变成:
$book = new Book();
$book->load(1234);
return $book->setTitle($title);
Run Code Online (Sandbox Code Playgroud)
我觉得这个问题必须先解决或讨论过......但我在网上找不到很多资源.这看起来像是一个理智的解决方案吗?
在使用关键字API获取热门关键字和短语之后,我还会收到很多额外字词("the","a"等)的"脏"字词.
我也想用搜索词来区分名字.
是否有Ruby库来清理关键字列表?这样的算法是否存在?
android ×2
java ×2
.net ×1
ajax ×1
api ×1
asp.net-mvc ×1
bundle ×1
bundler ×1
c# ×1
capistrano ×1
e-commerce ×1
javascript ×1
json-rpc ×1
keyword ×1
linq ×1
locals ×1
mocking ×1
moq ×1
partial ×1
rpc ×1
ruby ×1
session ×1
shell ×1
sqlite ×1
string ×1
textwatcher ×1
three20 ×1
unit-testing ×1
unix ×1
web ×1