我使用的是.Net Core2.2。我有一个带有环境变量的 API 项目。这些变量正在注入CI。
我想做的是,当我运行集成测试时,它应该启动 API 项目(或伪造确切的 API 服务器)并调用其中一个控制器。
问题是 launchSettings.json 上的环境变量没有注入。
我的测试服务器初始化:
var testServer = new TestServer(new WebHostBuilder()
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddEnvironmentVariables();
})
.UseStartup<Startup>());
Run Code Online (Sandbox Code Playgroud)
我已将相同的 launchSetting.json 文件添加到测试项目中,但它也不起作用。
我做错了什么?谢谢。
c# integration-testing xunit environment-variables asp.net-core
我刚刚读过一篇关于通用实体基类的文章。简单地说,如果我没有错的话,后面的主要思想是在一个接口中收集所有通用的、非实体特定的字段,而不是在主要实体中实现它。这将是一篇 TL:DR;让我们看一些代码。
这是基本实体接口,它是另一个接口的通用实现
public interface IEntity : IModifiableEntity
{
object Id { get; set; }
DateTime CreatedDate { get; set; }
DateTime? ModifiedDate { get; set; }
string CreatedBy { get; set; }
string ModifiedBy { get; set; }
byte[] Version { get; set; }
}
public interface IEntity<T> : IEntity
{
new T Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是它在抽象类中的实现
public abstract class Entity<T> : IEntity<T>
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public T Id { get; set; }
object IEntity.Id
{ …Run Code Online (Sandbox Code Playgroud) 我有一款与 API 交互的手机游戏。我希望仅从该移动应用程序调用此 API 。它解释起来很简单,但另一方面,它的简单又使它变得混乱。
没有用户,因此没有用户凭据。这是一个从 API 请求图像的开放游戏。
我不想实施的事情:
HardcodedSecret/apikey/token 等 -> 没有任何内容必须是硬编码的One Time Password-> 无需通过短信、电子邮件、推送通知或任何用户交互进行 OTP。Device ID或Advertising ID -> 好的解决方案,但任何其他应用程序也会获取此 ID,然后调用我的 API。另外,任何攻击者都可以发送任何内容作为设备 ID,对吧?那么如何验证该设备 ID 是否是现有设备的真实标识符呢?游戏开发与Unity3D. API 由AWS API Gateway和组成Lambda。我正在考虑使用 AWSCognito作为身份验证服务器。
感谢您的想法!
c# ×2
asp.net-core ×1
asp.net-mvc ×1
aws-lambda ×1
base-class ×1
generics ×1
jwt ×1
mobile ×1
xunit ×1