小编Ser*_*uss的帖子

对象 gatting 不是 io 包的成员

我有一个现有的 Scala 加特林项目,我正在使用命令行执行该项目(当前没有 IDE)。我需要能够引用另一个外部项目,因此我尝试将 SBT 与它一起使用,但我似乎无法使其正常工作。

我引用了以下页面:https://gadling.io/docs/current/extensions/sbt_plugin/,我试图做的唯一真正的区别是不同的目录,这似乎是正确的。

每当我编译或运行 gatling:test 时,都会出现以下错误

object gatling is not a member of package io
[error] import io.gatling.core.Predef._
[error]           ^
Run Code Online (Sandbox Code Playgroud)

问题似乎是 SBT 没有正确选择加特林项目。我的文件目前如下所示:

构建.sbt

enablePlugins(GatlingPlugin)

scalaVersion := "2.12.8"

scalacOptions := Seq(
  "-encoding", "UTF-8", "-target:jvm-1.8", "-deprecation",
  "-feature", "-unchecked", "-language:implicitConversions", "-language:postfixOps")

scalaSource in Compile := baseDirectory.value / "Gatling"

libraryDependencies += "io.gatling.highcharts" % "gatling-charts-highcharts" % "3.1.3" % "test"
libraryDependencies += "io.gatling"            % "gatling-test-framework"    % "3.1.3" % "test"
Run Code Online (Sandbox Code Playgroud)

插件.sbt

addSbtPlugin("io.gatling" % "gatling-sbt" % "3.0.0")
Run Code Online (Sandbox Code Playgroud)

构建属性

sbt.version=1.2.8
Run Code Online (Sandbox Code Playgroud)

如果您想知道为什么插件文件引用版本 3.0.0 …

scala sbt gatling scala-gatling

4
推荐指数
1
解决办法
6441
查看次数

实施单元测试接口

我有一个接口,用于获取一些数据的MVC控制器.为了简单起见,到目前为止界面看起来像这样:

public interface IDataProvider
{
    DataModel GetData();
}
Run Code Online (Sandbox Code Playgroud)

我对此接口进行了适当的单元测试,在操作中调用它.但是,在实际实现中,这将调用Web服务,当然可以抛出异常,因此如果确实如此,我想编写测试以确保在发生错误时记录消息.

为此,我有一个记录器接口,它实际上是一个名为ILogger的NLog接口.我能做到这一点:

public interface IDataProvider
{
    DataModel GetData(ILogger logger);
}
Run Code Online (Sandbox Code Playgroud)

这将允许我为记录器运行单元测试,使其变得美观和简单.但是,我不认为这是正确的方法,因为记录器与此方法实际上无关.此外,如果我开始向我需要记录的接口添加其他方法,那么我将必须在所有这些方法的参数中包含记录器.

我现在能想到的最好的方法是在我的实现的构造函数中包含logger,它可能如下所示:

public class DataProvider : IDataProvider
{
    private readonly ILogger _logger;

    public DataProvider(ILogger logger)
    {
        _logger = logger;
    }

    public DataModel GetData()
    {
        // CODE GOES HERE
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这意味着我无法在单元测试中测试记录器.实现这一目标的最佳方法是什么,以便我可以将记录器与方法分开并使其可测试?

我会感激任何帮助,谢谢.

编辑:

我意识到我错过了单元测试代码这里是我的意思:

目前我确保以这种方式在我的动作中调用GetData:

var controller = new DataController(_dataProvider.Object);

controller.Index();

_dataProvider.Verify(dataProvider => dataProvider.GetData());
Run Code Online (Sandbox Code Playgroud)

我想做的是相同但对于记录器,但只有在抛出异常时才会这样:

_dataProvider.Setup(dataProvider => dataProvider.GetData()).Throws<WebException>();

var controller = new DataController(_dataProvider.Object);

controller.Index();

_logger.Verify(logger => logger.ErrorException(It.IsAny<string>(), It.IsAny<Exception>());
Run Code Online (Sandbox Code Playgroud)

显然,logger将在设置中提供给数据提供者.我希望这更有意义.

c# testing logging interface

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

无法从用法中推断出方法GroupJoin的类型参数

我对使用Entity Framework非常陌生,并且一直遇到无法编译我的代码的问题。我收到的错误消息是:

方法'System.Linq.Queryable.GroupJoin(System.Linq.IQueryable,System.Collections.Generic.IEnumerable,System.Linq.Expressions.Expression>,System.Linq.Expressions.Expression>,System.Linq。无法从用法中推断Expressions.Expression,TResult >>)'。尝试显式指定类型参数。

我进行了一些搜索,发现了一些类似的问题,但是没有任何帮助可以解决我的问题。我只是想输出一些简单的东西用于调试,这是我目前的代码:

var result = _context.Set<User>()
             .Where(user => user.GraphMeetingStatistics && user.Id == userId)
             .GroupJoin(_context.Set<Meeting>()
                 .Where(meeting => meeting.UserId == userId),
                 user => user.Id,
                 meeting => meeting.Guid,
                 (user, meeting) => meeting);
Run Code Online (Sandbox Code Playgroud)

我很乐意为您解决此错误

c# linq entity-framework

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

使用AngularJS的Web API异步方法

我是新来使用AngularJSMVC5,我一直在寻找使用Web APIAngularJS因为它似乎是一个很好的解决方案将数据加载到您的客户端模式.

但是我注意到有不少指南使用异步操作返回Task<Model>,我不明白这会给你带来什么好处而只使用标准Web API操作(例如:http://monox.mono-software.com/blog/post/ Mono/233/Async-upload-using-angular-file-upload-directive-and-net-WebAPI-service /http://www.asp.net/web-api/overview/getting-started-with-aspnet -web-api/build-a-single-page-application-%28spa%29-with-aspnet-web-api-and-angularjs).

由于这些对Web API的调用是异步的,我不知道为什么我们需要使这些方法调用异步.使用标准的Web API调用不是更好吗?

我不知道stackoverflow是否适合这个,但我希望能解释为什么调用这样做.

.net c# asp.net async-await

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

MonoTouch:Settings.bundle文件问题

我一直在尝试为我的应用程序设置设置,但即使我一遍又一遍地查看它并将其与书中的示例和Craig Dunn博客上示例进行比较,我似乎无法使其正常工作.

我知道语法必须是完美的,这个文件非常简单,目前我只是想显示一个文本字段.我确实对一个全新的项目进行了简要的工作,但是从那时起我就没有设法让它工作.

这是我的Root.plist文件的XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Root</key>
<dict>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Title</key>
            <string>Group Name</string>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
        </dict>
        <dict>
            <key>AutocapitalizationType</key>
            <string>None</string>
            <key>AutocorrectionType</key>
            <string>No</string>
            <key>Key</key>
            <string>usernameTextField</string>
            <key>Title</key>
            <string>Username</string>
            <key>Type</key>
            <string>PSTextFieldSpecifier</string>
        </dict>
    </array>
</dict>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

正如我所说,我已经看了很多次,我看不出任何问题.文件构建操作设置为"内容","复制到输出目录"设置为"始终复制".我正在使用的MonoTouch版本是6.0.7.

我对这个问题有任何帮助表示感谢.谢谢

xamarin.ios ipad root.plist settings.bundle ios6

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

从 Apache Spark 中的数据帧生成所有可能的组合

我正在尝试做一些非常简单的事情,其中​​我有 2 个已转换为数据框的数组,并且我想显示所有可能的组合。例如,我目前的输出如下所示:

+-----------+-----------+
|         A |         B |
+-----------+-----------+
|     First |         T |
|    Second |         P |
+-----------|-----------+
Run Code Online (Sandbox Code Playgroud)

然而,我实际上正在寻找的是:

+-----------+-----------+
|         A |         B |
+-----------+-----------+
|     First |         T |
|     First |         P |
|    Second |         T |
|    Second |         P |
+-----------|-----------+
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经有了一些相当直接的代码来将我的数组映射到列中,但是对于同时使用 Scala 和 Spark 还很陌生,我不确定如何获取所有这些组合。这是我到目前为止所拥有的:

val firstColumnValues = Array("First", "Second")
val secondColumnValues = Array("T", "P")

val xs = Array(firstColumnValues, secondColumnValues).transpose
val mapped = sparkContext.parallelize(xs).map(ys => Row(ys(0), ys(1)))
val df = …
Run Code Online (Sandbox Code Playgroud)

scala dataframe apache-spark

0
推荐指数
1
解决办法
1563
查看次数