好吧作为C#NUnit的家伙,这可能很奇怪.
但茉莉花是否允许参数化单元测试?
我不确定它是否违反"声明"和"它"以使非程序员可读.
我见过一些第三方插件,但它们有点陈旧,不确定它是否已添加到茉莉花中.如果我想使用插件
只是为了帮助将来发现这一点的人,我在茉莉花论坛上被告知在Jasmine本身内没有对参数化测试的一流支持.
unit-testing parameterized-unit-test jasmine parameterized-tests
我一直在尝试创建一个自动映射器自定义值解析器,但我似乎错过了一些设置步骤,因为它似乎永远找不到
public abstract class ValueResolver<TSource, TDestination> : IValueResolver
Run Code Online (Sandbox Code Playgroud)
所以在下面的代码片段中不会编译。
using DITest.Models; // This is where the SalesOrder class is
using AutoMapper;
namespace DITest.AutoMapper.SaleOrder
{
public class FullAddress : ValueResolver<SalesOrder, string>
{
protected override string ResolveCore(SalesOrder source)
{
return "foo bar";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
找不到类型或命名空间名称“ValueResolver<,>”(您是否缺少 using 指令或程序集引用?)
它说使用 AutoMapper 没有使用。
过去我很调皮,在 lib\net45\AutoMapper.dll 的参考中被黑
好吧,我对使用 API 的理解有限
我试图掌握 Adobe Sign API 并遇到了死胡同,在那里的测试页面上我已经输入了这个并且它有效
但我不知道如何在 C# 中做到这一点
我已经尝试了以下方法,但知道它缺少 OAuth 的东西,我只是不确定接下来要尝试什么。顺便说一句 foo.GetAgreementCreationInfo() 只是获取屏幕截图中的字符串,我只是将其移出因为它又大又丑
var foo = new Models();
var client = new RestClient("https://api.na1.echosign.com/api/rest/v5");
// client.Authenticator = new HttpBasicAuthenticator(username, password);
var request = new RestRequest("agreements/{AgreementCreationInfo}", Method.POST);
request.AddParameter("name", "value"); // adds to POST or URL querystring based on Method
request.AddUrlSegment("AgreementCreationInfo", foo.GetAgreementCreationInfo()); // replaces matching token in request.Resource
IRestResponse response = client.Execute(request);
var content = response.Content; // raw content as string
Run Code Online (Sandbox Code Playgroud) 所以我在MVC中使用autofac,所以我的控制器可以在那里注入构造函数,我有我的Global.asax我有以下代码片段,它的工作原理.
// Register your MVC controllers.
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterType<PurchaseOrderSearchService>().As<IPurchaseOrderSearchService>().WithParameter("context", new PurchaseOrderManagerContext());
// Set the dependency resolver to be Autofac.
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)
问题是我不想一遍又一遍地使用builder.RegisterType,对于我的所有服务.那我该怎么做?
我想我想要的是那种东西
builder.RegisterAssemblyTypes(foo)
.Where(t => t.Name.EndsWith("Services"))
.WithParameter("context", new PurchaseOrderManagerContext());
Run Code Online (Sandbox Code Playgroud)
但不知道foo应该是什么.或者如果RegisterAssemblyTypes是正确的方式.我知道按惯例编码是解决方案,但不确定约定是什么.我的所有服务都将以字服务结束并具有界面
所以FooService将具有接口IFooService,而BarService将具有接口IBarService
还应该指出所有服务都存在于名为PurchaseOrderManager.Service的类库中
我继承了这个项目,我通常不统一作为我的依赖解析器,所以请原谅我,如果这是一个愚蠢的问题。
当我尝试解决接口时,我收到以下消息。
内部异常1:
InvalidOperationException:没有可用于类型 [ProjectName].ITest 的公共构造函数
内部异常2:
InvalidRegistrationException:引发了“Unity.Exceptions.InvalidRegistrationException”类型的异常。
现在,在有人跳到我身上并说我没有构造函数之前,该类看起来像这样......它有一个没有参数的构造函数。
namespace ProjectName
{
public class Test : ITest
{
public Test()
{
}
public int Foo() => 99;
}
public interface ITest
{
int Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
所以有一个没有参数的构造函数 这是试图解析该类的类。
[Route("api/Test")]
public class TestController : ApiController
{
[Dependency]
public ITest Test { get; set; }
public TestController()
{
}
[HttpPost]
public IHttpActionResult Post()
{
var i = Test.Foo();
return Ok();
}
}
Run Code Online (Sandbox Code Playgroud) 如果我有这样的数据库结构
class Parent {
int ID { get; set; }
string Name { get; set; }
List<Child> Children { get; set; }
}
class Child {
int ID { get; set; }
string Name { get; set; }
List<Parent> Parents { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想得到所有有孩子的父母的名单,名字不是"Dave"
因此,如果父母一个有两个孩子叫Jack和Jill,我想要他们
如果父母二有两个孩子叫萨姆和戴夫我不想要他们
如果父母三没有孩子我想要他们
如果父母四有一个名叫史蒂夫的孩子我想要他们
如果父母五有一个孩子叫戴夫,我不想要他们
我想要一个带有日期选择器的引导程序模型。我已经复制了此示例中的所有内容,并且工作正常。
http://jsfiddle.net/sudiptabanerjee/93eTU/
问题是,我的对话框内容是部分视图,并使用JQuery设置。它似乎从不显示日期选择器。我已经复制了代码的相关部分。
所以在屏幕上有一个像
<button type="button" class="btn btn-primary" id="btnEdit"
data-itemId=@item.ItemId
data-toggle="modal"
data-target="#myModal">
Edit
</button>
Run Code Online (Sandbox Code Playgroud)
哪个具有JQuery点击事件
$(document).on("click", "# btnEdit", function (e) {
$.ajax({ url: "/Item/Edit",
datatype: "text",
data: { itemId: $(this).attr('data-ItemId) },
type: "GET",
}).done(function (partialViewResult) {
$(".modal-content").html(partialViewResult);
});
});
Run Code Online (Sandbox Code Playgroud)
}); 然后转到名为ItemController的MVC控制器,并调用Edit,以获取部分视图公共ActionResult Edit(Guid itemId){return PartialView(“ _ Edit”,GetByItemID(itemId)); }
编辑部分视图如下所示,这就是不显示id为datepicker的输入的原因
@model Project.Models.Item
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria- label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel"> Item</h4>
</div>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<p>Date: <input …Run Code Online (Sandbox Code Playgroud) 我在 EF 缓存数据方面遇到了一个奇怪的问题,并且只能获取创建 DB 内容时的值。
这是一个问题,因为 DB 上下文被注入到承包商上。
我已将 LazyLoadingEnabled 设置为 false。
EF 已首先设置为数据库,这将被更改,因此它首先编码。
我正在使用 autofac 进行依赖注入。
我知道下面的演示很奇怪,但这是解释它的最简单方法。
因此,如果我调用以下代码,但如果我在每个 GetFooById 上放置一个断点,我将进入 SQL 数据库并更改 foo 表中的值,它将不会加载新的更改,它将加载值,就像以前一样我已开始。
var item1 = _fooService.GetFooById(1);
var item2 = _fooService.GetFooById(1);
var item2 = _fooService.GetFooById(1);
Run Code Online (Sandbox Code Playgroud)
我想知道如何让 EF 总是从数据库中获得最多的更新值。我的 foo 服务看起来像这样
private readonly DBEntities _dbContext;
public FooService(DBEntities dbContext)
{
_dbContext= dbContext;
}
public Foo GetFooById(int id)
{
return _dbContext.Foo.First(x => x.Id== id);
}
Run Code Online (Sandbox Code Playgroud)
autofac 看起来像
builder.RegisterAssemblyTypes(ThisAssembly)
.Where(t => t.Name.EndsWith("Service"))
.WithParameter("dbContext", new DBEntities())
.AsImplementedInterfaces();
Run Code Online (Sandbox Code Playgroud) c# ×4
asp.net-mvc ×3
autofac ×2
api ×1
automapper ×1
echosign ×1
jasmine ×1
jquery ×1
linq ×1
restsharp ×1
unit-testing ×1