假设我有这些关系的权利:这只是一个虚构的例子,而不是我现在的实体.
课程有很多用户,用户有很多课程
课程有很多NewsPosts,NewsPosts有很多课程
用户有很多NewsPosts,NewsPosts有很多用户
我首先使用.NET Web API实现实体框架代码,它以JSON的形式发回实体.当我尝试获取一个课程时,它会发回一个带有entites关系的JSON结果,这很好,但我希望设置一个限制它序列化的级别,所以它不会序列化所有关系超出第一个或二级.
GET课程/将序列化为:
{
"Users":[{
"id":1,
"newsPosts": [{
"id":1,
"message":"foo"
}]
}],
"newsPosts":[{
"id":2,
"message":"bar"
}]
}
Run Code Online (Sandbox Code Playgroud)
我想要的是仅序列化1个或2个级别,结果将是:
{
"Users":[{
"id":1,
"newsPosts": []
}],
"newsPosts":[{
"id":2,
"message":"bar"
}]
}
Run Code Online (Sandbox Code Playgroud)
我添加了一个:
json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
Run Code Online (Sandbox Code Playgroud)
这是删除referencelooping.
简而言之:有没有办法设置最大数量的节点来序列化?
我正在尝试在进行集成测试时使用内存连接器作为数据源.但似乎总是连接到mongodb-datasource.
我所做的一个主要工作是将每个模型的数据源更改为内存.但必须有更好的方法来做到这一点.我正在从gulp任务中运行我的测试.我的roflmao模型 - 记忆 - 黑客:
var models = require('../server/model-config.json');
for (var key in models) {
var model = loopback.getModel(key);
loopback.configureModel(model, {dataSource: memory});
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更改应用程序的数据源?或者我是否必须更改每个模型的数据源..?
这样做的一种方法是在测试期间更改环境变量,但到目前为止,没有运气..我正在使用gulp-task预处理执行此操作.
希望通过更改环境变量,它将使用datasources.integrationtesting.js,其中我将内存作为数据源.
我的任务:
return gulp.src('integration-tests/*.js')
.pipe($.preprocess({context: {NODE_ENV: 'integrationtesting'}}))
.pipe($.mocha())
Run Code Online (Sandbox Code Playgroud)
我正在使用:
感谢任何评论.. :)
我对.NET Web Api没有太多经验,但是我现在已经使用它了一段时间,遵循John Papa关于Pluralsight的SPA应用程序教程.该应用程序工作正常,但我现在正在努力的是单元测试POST控制器.
我已经按照这个令人难以置信的指导如何对web api控制器进行单元测试.对我来说唯一的问题是测试POST方法.
我的控制器看起来像这样:
[ActionName("course")]
public HttpResponseMessage Post(Course course)
{
if (course == null)
throw new HttpResponseException(HttpStatusCode.NotAcceptable);
try
{
Uow.Courses.Add(course);
Uow.commit();
}
catch (Exception)
{
throw new HttpResponseException(HttpStatusCode.InternalServerError);
}
var response = Request.CreateResponse(HttpStatusCode.Created, course);
string uri = Url.Link(routeName: "ControllerActionAndId",
routeValues: new { id = course.Id });
response.Headers.Location = new Uri(uri);
return response;
}
Run Code Online (Sandbox Code Playgroud)
我的单元测试看起来像这样:
[Test]
public void PostShouldReturnHttpResponse()
{
var populatedPostController = new CoursesController(new TestUOW());
SetupPostControllerForTest(populatedPostController);
var course = new Course
{
Id = 12,
Author = …Run Code Online (Sandbox Code Playgroud) 假设您有一个图表中显示的系列的线图.当您使用EnhancedLegendRenderer打开和关闭系列时,系列会在隐藏和可见之间切换.这就是应该如何.但事实上,我希望系列保持可见的比例,以便具有最高y值的系列将位于图表的顶部,同时调整y轴上的值.下图显示了当我将具有最高值的系列切换为隐藏时的外观.
这样做有简单或先进的方法吗?我试图从图表中完全删除系列,从数据中删除它,并创建一个新的jqplot.但那时它在传奇中也不可见.还尝试了使用chart.series [i] .show = false的不同方法; chart.replot(); 等,但结果相同.
情节图片http://i45.tinypic.com/52mn8m.png 情节图片http://i48.tinypic.com/vp9ker.png
.net ×1
javascript ×1
jqplot ×1
jquery ×1
json ×1
loopbackjs ×1
node.js ×1
nunit ×1
strongloop ×1
unit-testing ×1