我有两个服务器托管两个不同的站点,两个独立的数据库.但是,有些数据需要共享 - 因此有一个CRON可以将数据从第一个站点复制到第二个站点.这两个站点曾经在同一台服务器上运行,但现在我们将它们分开,所以我试图修改PHP以便能够处理这个问题.
这是我遇到问题的代码:
$sql = "SELECT * FROM site1.events";
$events = mysql_query($sql, $site1db);
$sql = "INSERT INTO site2.events SELECT * FROM $events";
$doIt = mysql_query($sql, $site2db);
Run Code Online (Sandbox Code Playgroud)
现在我知道它SELECT * FROM site1.events是成功的,但它不能插入第二个站点,我没有看到任何类型的错误.我之前从未编写过PHP(这是一项遗留任务),所以如果它之前已被覆盖过,那么请指出正确的方向.
请注意,site2.events在这些命令之前被截断,因此不需要进行比较.
我在线程方面很新,但InvalidOperationException在使用以下代码时却遇到了问题。我知道它正在尝试访问,importFileGridView但这是由创建异常的 UI 线程创建的。我的问题是,我该如何解决这个问题?GetAllImports 是否可以具有返回类型?如何temp从我的 UI 线程访问?
ThreadPool.QueueUserWorkItem(new WaitCallback(GetAllImports), null);
private void GetAllImports(object x)
{
DataSet temp = EngineBllUtility.GetAllImportFiles(connectionString);
if (temp != null)
importFileGridView.DataSource = temp.Tables[0];
else
MessageBox.Show("There were no results. Please try a different search", "Unsuccessful", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Run Code Online (Sandbox Code Playgroud) 当它回发时,我收到以下错误:
具有键'ClosingDateDay'的ViewData项的类型为'System.Int32',但必须是'IEnumerable'类型.有任何想法吗?
这是我的控制器:
CompetitionEditViewModel viewModel = new CompetitionEditViewModel
{
ClosingDate = competition.CloseDate,
Description = competition.Description,
DescriptionHeading = competition.DescriptionHeading,
ImageAssetId = competition.ImageAssetId,
IsActive = competition.IsActive,
MainHeading = competition.MainHeading,
TermsAndConditions = competition.TermsAndConditions,
UrlSlug = competition.UrlSlug
};
viewModel.ClosingDateMonthOptions = new List<SelectListItem>();
for (int i = 1; i <= 12; i++)
{
string monthName = new DateTime(2000, i, 1).ToString("MMMM");
((List<SelectListItem>)viewModel.ClosingDateMonthOptions).Add(new SelectListItem { Text = monthName, Value = i.ToString() });
}
viewModel.ClosingDateDayOptions = new List<SelectListItem>();
for (int i = 1; i <= 31; i++)
{ …Run Code Online (Sandbox Code Playgroud) 我有一个简单的HTML页面,当我触摸div时,我们无法滚动.你可以在这里找到这个页面
如果你用桌面浏览器打开这个页面,比如firefox,如果你按下div就无法滚动.
现在我想在移动设备上使用此行为,例如Android.实际上在Android上如果打开此页面,您可以在任何情况下滚动.
对不起我的例子中的颜色;)
我在测试自定义验证属性时遇到了一些麻烦.因为方法签名就是protected当我IsValid在单元测试中调用方法时,我无法传入一个Mock<ValidationContext>对象,而是调用基类virtual bool IsValid(object value).
ValidationAttribute
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var otherPropertyInfo = validationContext.ObjectType.GetProperty(this.otherPropertyName);
var otherPropertyValue = otherPropertyInfo.GetValue(validationContext.ObjectInstance, null);
if (value != null)
{
if (otherPropertyValue == null)
{
return new ValidationResult(FormatErrorMessage(this.ErrorMessage));
}
}
return ValidationResult.Success;
}
Run Code Online (Sandbox Code Playgroud)
测试
[Test]
public void Should_BeValid_WhenPropertyIsNullAndOtherPropertyIsNull()
{
var attribute = new OptionalIfAttribute("test");
var result = attribute.IsValid(null);
Assert.That(result, Is.True);
}
Run Code Online (Sandbox Code Playgroud)
如果我无法传入模拟的验证上下文,那么我该如何正确测试这个类呢?
我在使用StructureMap构造函数中存在可为空参数的服务时遇到了一些困难.即
public JustGivingService(IRestClient restClient = null)
Run Code Online (Sandbox Code Playgroud)
在我的配置中,与所有其他服务一起,我通常能够以最小的方式逃脱,所以这里的问题可能只是缺乏理解.我这样做:
container.For<IJustGivingService>().Use<JustGivingService>()
Run Code Online (Sandbox Code Playgroud)
但是,由于可以为空的参数,我会发现我需要使用它来使其工作:
RestClient restClient = null;
container.For<IJustGivingService>().Use<JustGivingService>()
.Ctor<IRestClient>("restClient").Is(restClient);
Run Code Online (Sandbox Code Playgroud)
然而,这对我来说确实有点脏,我觉得这可能是我想要实现的解决方案,而不是标准的方法.如果有更好的方法可以做到这一点,附带的信息将非常感谢.
我为main_function编写了一个单元测试,并断言它使用类的实例调用其中的函数get_things,并使用patch作为参数进行模拟:
@patch("get_something")
@patch("MyClass.__new__")
def test(self, mock_my_class_instance, mock_get_something):
# Given
dummy_my_class_instance = MagicMock()
mock_my_class_instance.return_value = dummy_my_class_instance
dummy_my_class_instance.get_things.return_value = {}
# When
main_function(parameter)
# Then
dummy_my_class_instance.get_things.assert_called_once_with(parameter["key1"], parameter["key2"])
mock_get_something.assert_called_once_with(dummy_my_class_instance)
Run Code Online (Sandbox Code Playgroud)
这是主要功能:
def main_function(parameter):
properties = get_properties(parameter)
my_class_instance = MyClass()
list_of_things = my_class_instance.get_things(properties["key-1"], properties["key-2"])
an_object = get_something(my_class_instance)
return other_function(list_of_things, an_object)
Run Code Online (Sandbox Code Playgroud)
它单独传递,但是当与其他修补MyClass.get_things()的测试一起运行时,它会失败.这是消息:
Unhandled exception occurred::'NoneType' object has no attribute 'client'
Run Code Online (Sandbox Code Playgroud)
似乎修补程序装饰器相互影响.
我试图在测试函数中创建模拟作为变量而不是装饰器,但问题仍然存在.我也尝试创建一个tearDown()来停止补丁,但它似乎不起作用.
在模拟类实例时,有没有办法隔离补丁或成功丢弃它们?
比方说,我有一个方法可以检查有效的英国邮政编码.我已经为该方法编写了一个单元测试,用于测试何时传入正确的UK邮政编码,该方法返回true.
我应该创建一个单独的单元测试来测试不正确的英国邮政编码,还是在相同的单元测试中进行测试?
谢谢
我试图允许用户将图像上传到我们的网站,我不太确定如何使用它.我曾尝试使用多种类型来定义图像,包括System.Drawing.Image与HttpPostedFileWrapper但@Html.EditorFor始终(可以理解)将调出其属性的字段修改.
在我看来,我确实有,但@Html.EditorFor我没有,<input type="file" name="imageToUpload" />但它没有被作为一部分的我的观点Model?我对MVC很陌生,所以我希望它是微不足道的.
这是我的观点:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>New Image</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Image)
</div>
<div class="editor-field">
<input type="file" name="imageToUpload" />
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
我的控制器:
[HttpPost]
public ActionResult CreateImage(string brand, string collection, ImageEditViewModel imageEditViewModel)
{
string fileName = Guid.NewGuid().ToString();
string serverPath = Server.MapPath("~"); …Run Code Online (Sandbox Code Playgroud) 在我的项目中,我有一对多的关系Client -> Projects.因此,在我的一个视图中,我试图显示属于该客户端的所有项目.所以我有一个IEnumerable<ProjectDetailsViewModel>代表所有客户项目.
问题是,ProjectDetailsViewModel有一个ClientDetailsViewModel,然后有一个IEnumerable<ProjectDetailsViewModel>等等等等产生相同的实体的无限循环.
这是否适合在.ForMember()上使用MaxDepth()方法?如果是这样,我在这种情况下如何使用它,如果没有,解决方案是什么?
我已经尝试了MaxDepth(1)Client,虽然这可以防止StackOverflow异常,但它不会在该客户端的视图模型中保存任何数据.
c# ×6
asp.net-mvc ×3
.net ×2
razor ×2
unit-testing ×2
automapper ×1
css ×1
html ×1
html-helper ×1
mobile ×1
mocking ×1
moq ×1
mysql ×1
patch ×1
php ×1
python ×1
structuremap ×1
threadpool ×1