小编Bli*_*sco的帖子

Stop Bundle Transformer在LESS中转换相对路径

我正在使用Bundle Transformer在MVC5项目中进行少量编译.My LESS包包含一个main.less文件,用于导入位于子文件夹中的其他文件.一些文件包含对图像文件的引用,如下所示 - 这在文件中/css/structure/header.less:

.site__logo {
    background: url('../img/logo.png') no-repeat;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

在编译的bundle(/css/lessBundle)中,这变为:

background: url('/css/img/logo.png') no-repeat;
Run Code Online (Sandbox Code Playgroud)

我希望.less文件中的相对路径在捆绑时保留,以便正确指向/img/logo.png,而不是/css/img/logo.png.我认为Bundle Transformer负责转换相对路径 - 文档有这一段,但没有详细说明:

您还需要了解当您插入CssTransformer和JsTransformer类的实例时,然后插入一组转换(在调试和预缩小版本的文件之间选择,从中间语言转换代码,运行时代码缩小,相对转换绝对路径(仅用于CSS代码)和代码组合).一组转换取决于您安装的Bundle Transformer的模块和您在Web.config文件中指定的设置.

这是我的BundleConfig:

public class BundleConfig
{
    public const string LessBundlePath = "~/css/lessBundle";

    public static void RegisterBundles(BundleCollection bundles)
    {
        var nullBuilder = new NullBuilder();
        var cssTransformer = new CssTransformer();
        var nullOrderer = new NullOrderer();

        // Skip JS-related stuff

        var lessBundle = new Bundle(LessBundlePath)
            .Include("~/css/main.less");
        lessBundle.Builder = …
Run Code Online (Sandbox Code Playgroud)

css less bundletransformer asp.net-mvc-5

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

为什么按类型添加AutoValidateAntiForgeryTokenAttribute不起作用?

在ASP.NET Core中,您可以通过在Startup.cs(docs)中包含此行来验证所有非GET请求:

services.AddMvc(options => options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute()));
Run Code Online (Sandbox Code Playgroud)

但是,如果按类型添加过滤器(使用typeof或使用泛型Add<T>方法),则验证似乎不起作用:

// Doesn't work
services.AddMvc(options => options.Filters.Add(typeof(AutoValidateAntiforgeryTokenAttribute));
// Doesn't work either
services.AddMvc(options => options.Filters.Add<AutoValidateAntiforgeryTokenAttribute>());
Run Code Online (Sandbox Code Playgroud)

请参阅https://github.com/davidgruar/GlobalFilterDemo以获得最小的repro.

这里发生了什么?

c# asp.net-core

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

是否有另一种方法可以在mvc中对业务逻辑进行单元测试

我手动为mvc5应用程序添加了单元测试.这是我的业务逻辑

public void AddTreatments(TreatmentView model)
{
    using(var treatment = new TreatmentRepository())
    {
        var treat = new PhysiqueData.ModelClasses.Treatment()
        {
            treatmentID = model.treatmentID,
            treatmentCost = model.treatmentCost,
            treatmentDuration = model.treatmentDuration,
            treatmentName = model.treatmentName
        }
        treatment.Insert(treat);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我在服务层中使用的存储库

public class TreatmentRepository:ITreatmentRepository
{
    private ApplicationDbContext _datacontext;
    private readonly IRepository<Treatment> _treatmentRepository;

    public TreatmentRepository()
    {
        _datacontext = new ApplicationDbContext();
        _treatmentRepository = new RepositoryService<Treatment>(_datacontext);
    }

    public void Insert(Treatment model)
    {
        _treatmentRepository.Insert(model);
    }
}
Run Code Online (Sandbox Code Playgroud)

下一个代码是我对我的治疗的实际单位测试,它不起作用,我可以得到一些指导.我搜索了很多东西,仍然无法做到正确.

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void AddingTreatmenttodatabase()
    {
        //var business = …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq repository-pattern asp.net-mvc-5

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

测试带有函数参数的函数时出现MissingMethodException

我正在使用FsUnit 2.1(使用NUnit 3.2)为F#项目编写测试.这是一个简单的模块:

namespace Library1
module LibraryFunctions =
    let Execute f1 = f1()
    let Id x = x
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

namespace Tests
open FsUnit
open NUnit.Framework
open Library1

[<TestFixture>]
type Tests() =

    [<Test>]
    // Passes
    member x.``LibraryFunctions.Id should return the value``() =
        LibraryFunctions.Id 42 |> should equal 42

    [<Test>]
    // Fails
    member x.``LibraryFunctions.Execute should return the result of the function``() =
        let f() = 42
        LibraryFunctions.Execute f |> should equal 42
Run Code Online (Sandbox Code Playgroud)

第二次测试失败(在NCrunch和ReSharper中),并显示以下消息:

System.MissingMethodException : Method not found: '!!0 Library1.LibraryFunctions.Execute(Microsoft.FSharp.Core.FSharpFunc`2<Microsoft.FSharp.Core.Unit,!!0>)'.

如果我将测试模块放在与测试相同的代码文件中(而不是在单独的VS项目中),则测试通过.我怀疑这是由于NUnit和F#/ C#interop的一些问题.如果是这样,怎么解决?

f# nunit missingmethodexception fsunit

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