小编Are*_*aas的帖子

在.NET Web API中设置JSON序列化的最大深度

假设我有这些关系的权利:这只是一个虚构的例子,而不是我现在的实体.

  • 课程
  • 用户
  • NewsPosts

课程有很多用户,用户有很多课程

课程有很多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.

简而言之:有没有办法设置最大数量的节点来序列化?

.net serialization json asp.net-web-api

10
推荐指数
1
解决办法
4672
查看次数

使用内存作为数据源的环回测试

我正在尝试在进行集成测试时使用内存连接器作为数据源.但似乎总是连接到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)

我正在使用:

  • 环回测试功能
  • 一饮而尽,摩卡

感谢任何评论.. :)

environment-variables node.js strongloop loopbackjs

9
推荐指数
1
解决办法
2122
查看次数

单元测试后控制器.NET Web Api

我对.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)

nunit unit-testing asp.net-web-api

6
推荐指数
1
解决办法
4899
查看次数

使用EnhancedLegendRenderer打开和关闭系列时,使用新值删除系列和重新绘制

假设您有一个图表中显示的系列的线图.当您使用EnhancedLegendRenderer打开和关闭系列时,系列会在隐藏和可见之间切换.这就是应该如何.但事实上,我希望系列保持可见的比例,以便具有最高y值的系列将位于图表的顶部,同时调整y轴上的值.下图显示了当我将具有最高值的系列切换为隐藏时的外观.

这样做有简单或先进的方法吗?我试图从图表中完全删除系列,从数据中删除它,并创建一个新的jqplot.但那时它在传奇中也不可见.还尝试了使用chart.series [i] .show = false的不同方法; chart.replot(); 等,但结果相同.

情节图片http://i45.tinypic.com/52mn8m.png 情节图片http://i48.tinypic.com/vp9ker.png

javascript jquery jqplot

2
推荐指数
1
解决办法
1650
查看次数